2014-12-10 2 views
0

Все,не может отклонить вид контроллера с помощью закрытия в UIAlert

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

Что у меня есть:

func displayErrMsg(ecode : errorCodes) ->() { 

    var etitle = "" 
    var etext = "" 
    var completionHandler: (()->())? 
    switch ecode { 
     case .NoError : 
      etitle = "Found You!" 
      etext = "Check your email for a link to reset your password" 
      completionHandler = { self.dismissViewControllerAnimated(true, { println("BUHBYE") })} 
     case .EmailAddressNotFound : 
      etitle = "Sorry, but we could not find you." 
      etext = "Have you registered?" 
     case .MalFormedEmailAddress : 
      etitle = "Opps!" 
      etext = "that is not a valid email address" 
     default : println(" unrecognized error code: \(ecode)") 
    } 

    userMessage(self, etitle, etext, completionHandler) 

} 

, который называет это:

public func userMessage(parent: UIViewController, title:String, message:String, completion:(() ->())?) { 
    var okButton : UIAlertAction 
    var alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert) 
    if let comp = completion { 
     okButton = UIAlertAction(title: "Ok", style: .Default, handler: { (alert) -> Void in 
      comp() 
     }) 
    } 
    else 
    { 
     okButton = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, nil) 
    } 
    alert.addAction(okButton) 
    parent.presentViewController(alert, animated: true, completion: nil) 
} 

В сценарии, где ecode является .NoError, я вижу "BUHBYE" напечатанный в консоли, но вид не удаляется после нажатия кнопки ОК (предупреждение удаляется). Из того, что я знаю, контроллер вида, который должен быть уволен закрытием, является тем, из которого вызывается displayErrorMsg . Верный? Почему это не работает?

Любая помощь очень ценится. : пн:

+0

У меня такая же проблема. Тем не менее, я путался с принятым ответом. Вы отказались от UIAlertController и используете UIAlertView? –

ответ

1

Я не знаком с быстрым, но если логика такая же, как Objective-C, вы можете представить этот вид контроллер на didDismiss оповещения вызова вида, а не clickedButton:

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 

Также обратите внимание, что вы не можете удалить контроллер представления представляя предупреждение вид из иерархии до предупреждения вид фактически не уволен.

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