2015-04-12 2 views
-2

Я вызываю код ниже, используя пункт «Добавить панель», где я представляю предупреждение, запрашивающее ввод пользователя. Он отлично работает в первый раз, и дать следующее сообщение об ошибке там после того, как:Ошибка UIAlertController

Код:

var alert = UIAlertController(title: "Enter Blog Link", message: nil, preferredStyle: .Alert) 
    func userBlogLinkEntryPopover() { 
     //  let alert = UIAlertView(title: "Enter Blog Link", message: nil, delegate: self, cancelButtonTitle: "Cancel") 
     alert.addTextFieldWithConfigurationHandler { (textField) -> Void in 
      textField.placeholder = "Enter Blog URL!" 
     } 
     alert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action) -> Void in 
      if let tf = self.alert.textFields?.first as? UITextField{ 
       println(tf.text) 
      } 
     })) 
     alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)) 
     presentViewController(alert, animated: true, completion: nil) 

    } 

Ошибка: «UIAlertController может иметь только одно действие с стиле UIAlertActionStyleCancel»

Я думаю, что он пытается добавить действие каждый раз, когда нажата кнопка добавления и, следовательно, ошибка. Пожалуйста, поправьте меня, если я ошибаюсь, а также предложите работу.

Благодарим за помощь.

+1

Почему вы перевели декларацию 'var alert' из функции' userBlogLinkEntryPopover'? Верните его туда. Предупреждение не должно быть собственностью. – matt

ответ

1

Я узнал, что, поскольку оповещение было объявлено вне функции, оно сохраняло все действия и из-за которых оно вызывало исключение. Я исправил свой код, как показано ниже, и он работал нормально.

func userBlogLinkEntryPopover() {  
     var alert = UIAlertController(title: "Enter Blog Link", message: nil, preferredStyle: .Alert) 
     alert.addTextFieldWithConfigurationHandler { (textField) -> Void in 
      textField.placeholder = "Enter Blog URL!" 
     } 
     alert.addAction(UIAlertAction(title: "Ok", style: .Default, handler: { (action) -> Void in 
      if let tf = alert.textFields?.first as? UITextField{ 
       println(tf.text) 
      } 
     })) 
     alert.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)) 
     presentViewController(alert, animated: true, completion: nil) 

    } 

С уважением

0

вы также получите это, если вы сделаете это, читайте внимательно посмотреть, если вы можете увидеть ошибку

resendAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: { (action: UIAlertAction!) in 
     //cancel clicked 
     return 
    })) 

    resendAlert.addAction(UIAlertAction(title: "Check Server", style: .cancel, handler: { (action: UIAlertAction!) in 
     //check server clicked 
     return 
    })) 

ПРИМЕЧАНИЕ --->.cancelявляется не быть использовано TWICE должно быть .default на втором

resendAlert.addAction(UIAlertAction(title: "Check Server", style: .default, handler: { (action: UIAlertAction!) in 
     //check server clicked 
     return 
    })) 

отлично работает

Смежные вопросы