Загрузка Просмотр в Swift
Быстрый вопрос! Извините за нюби заранее. Я недавно начал разрабатывать приложения для iOS и хотел загрузить вид для нажатия кнопки. Я работаю в swift4.
@IBAction func btnAddItem_AddDrinks_Click(_ sender: Any) {
//[self dismissViewControllerAnimated:YES completion:nil];
//[self.navigationController popViewControllerAnimated:YES];
if strIsSpecial == nil {
ValidationString.sharedManager().showAlert(withTitle: "", messageBody: "Please select either Regular, Special or Free")
}
else if ValidationString.sharedManager().isNullString(txtfldOunce.text!) == true {
// ValidationString.sharedManager().showAlert(withTitle: ALERT_TITLE, messageBody: "Ounce" + (ALERT_FIELD_SHOULD_NOT_BLANK))
let alert = UIAlertController(title: "Alert", message: "Ounces shouldn't be left blank", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
else if ValidationString.sharedManager().isNullString(txtfldUserReference_AddDrinks.text!) == true {
let alert = UIAlertController(title: "Alert", message: "Drink Name shouldn't be left blank", preferredStyle: UIAlertControllerStyle.alert)
alert.addAction(UIAlertAction(title: "Click", style: UIAlertActionStyle.default, handler: nil))
self.present(alert, animated: true, completion: nil)
//ValidationString.sharedManager().showAlert(withTitle: ALERT_TITLE, messageBody: "Drink Name" + (ALERT_FIELD_SHOULD_NOT_BLANK))
}
else {
if view_Loading != nil {
view_Loading?.removeFromSuperview()
view_Loading = nil
obj_LoadView = nil
}
obj_LoadView = LoadView(frame: <#CGRect#>)
view_Loading = obj_LoadView?.showActivity("Loading....")
view.addSubview(view_Loading!)
view.isUserInteractionEnabled = false
Текущая ошибка "Редактор является заполнителем" для obj_LoadView = LoadView (frame: <# CGRect #>). Я знаю, что нужно что-то поставить для CGRect, но не знаю, что. Любая помощь приветствуется, спасибо!
2 ответа
Мне лично нравится создавать свою собственную активность IndicatorView
class LoadingView: UIView {
private var activityIndicatorView: UIActivityIndicatorView {
let view = UIActivityIndicatorView(activityIndicatorStyle: .white)
view.startAnimating()
view.center = self.center
return view
}
private var isPresenting: Bool = false
override init(frame: CGRect) {
super.init(frame: frame)
self.backgroundColor = .black
self.alpha = 0.0
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func present() {
guard let window = UIApplication.shared.keyWindow else { return }
window.addSubview(self)
fadeIn()
}
func dismiss() {
guard isPresenting == true else { return }
fadeOut()
}
private func fadeIn() {
UIView.animate(withDuration: 0.25, delay: 0.0, options: .curveEaseInOut, animations: {
self.alpha = 0.5
}) { (bool: Bool) in
self.addSubview(self.activityIndicatorView)
self.isPresenting = true
}
}
private func fadeOut() {
UIView.animate(withDuration: 0.25, delay: 0.0, options: .curveEaseInOut, animations: {
self.alpha = 0.0
}) { (bool: Bool) in
self.removeFromSuperview()
self.isPresenting = false
}
}
}
Когда вы начнете печатать, Xcode автоматически заполняет для вас выписки. Если вы не измените автоматически заполненные аргументы, вы получите эту ошибку.
Проблема в этой строке здесь:
obj_LoadView = LoadView(frame: <#CGRect#>)
<#CGRect#>
должен быть изменен с фактическим CGRect вместо заполнителя.
Сделайте CGRect нужного размера для нового вида:
obj_LoadView = LoadView(frame: CGRect(x: 0.0, y: 0.0, width: 400.0, height: 400))
Это сделало бы кадр вида 400х400 точек.
Если вы хотите сделать просмотр в полном размере, вы можете сделать это:
obj_LoadView = LoadView(frame: view.frame)