UIAlertController в быстром
Я создаю view controller
быстро с несколькими текстовыми полями и accept button
который подтверждает ввод пользователя. accept button
также проверяет, является ли какое-либо из текстовых полей пустым. Если так, то всплывет alert
говоря что-то вроде it cannot be empty
, если он не пустой, он сохранит ввод и затем перейдет к другому виду.
Я создал отдельную функцию под названием checEmpty()
который выглядит так:
func checEmpty(title: String, object: UITextField) -> (Bool) {
if object.text.isEmpty {
let alertController = UIAlertController(title: "Invalid input",
message:"\(title) cannot be empty",
preferredStyle: UIAlertControllerStyle.Alert)
alertController.addAction(UIAlertAction(title: "Dismiss",
style: UIAlertActionStyle.Default)
self.presentViewController(alertController, animated: true, completion: nil)
return false
} else {
return true
}
}
И я называю эту функцию в acceptButton
действие:
@IBAction func acceptButton(sender: UIButton){
if(checEmpty("Event", object: eventName) && checEmpty("Priority", object: Priority)
{
//if not empty, confirm the user input
// ...
}
Когда я запускаю его, предупреждающее сообщение работает нормально, но по какой-то причине консоль показывает это:
2015-08-03 12: 11: 50.656 FinishItToday [13777: 688070]> окно не равно окну просмотра!
Может кто-нибудь сказать мне, почему появляется это предупреждение? Большое спасибо!
PS. Я хочу, чтобы, если какое-либо текстовое поле пустое, показывалось предупреждение, а затем оставалось на той же странице. Если ни один из них не пуст, тогда выполните переход и переключитесь на другое представление. Код выше работает нормально, кроме предупреждения.
2 ответа
Вот ваш рабочий код:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var eventName: UITextField!
@IBOutlet weak var Priority: UITextField!
@IBAction func acceptButton(sender: UIButton){
if checEmpty("Event", object: eventName) && checEmpty("Priority", object: Priority){
println("Both Text Fields Are Empty")
}
}
func checEmpty(title: String, object: UITextField) -> (Bool) {
if object.text.isEmpty {
var Alert = UIAlertController(title: "Invalid input", message: "\(title) cannot be empty", preferredStyle: UIAlertControllerStyle.Alert)
Alert.addAction(UIAlertAction(title: "Dismiss", style: .Cancel, handler: { action in
println("Click of cancel button")
}))
self.presentViewController(Alert, animated: true, completion: nil)
return false
} else {
return true
}
}
}
Используйте этот код для оповещения контроллера в Swift. Это может помочь вам.
import UIKit
protocol alertViewDelegate {
func actionActive(index:Int, tag:Int)
}
class AlertView: NSObject {
var delegate:alertViewDelegate!
func showAlert(title:String, message:String, actionName:NSArray, tag:Int) -> UIAlertController {
var alertController:UIAlertController = UIAlertController(title: title, message: message, preferredStyle: .Alert)
for str: AnyObject in actionName {
let alertAction:UIAlertAction = UIAlertAction(title: str as! String, style: UIAlertActionStyle.Default, handler: { (action) -> Void in
self.delegate.actionActive(actionName.indexOfObject(str), tag:tag)
})
alertController.addAction(alertAction)
}
return alertController;
}
}