2014-12-06 3 views
5

Я показываю UIAlertController, когда загружается мое изображение. Когда загрузка завершена, я хочу нажать контроллер вида. У меня есть ошибка в консоли, потому что я не отклонять оповещения контроллера:Как отклонить UIAlertController без каких-либо действий в SWIFT?

pushViewController:animated: called on <UINavigationController 0x7fb190c6ee00> while an existing transition or presentation is occurring; the navigation stack will not be updated. 

В моем главном контроллере представления, когда загрузка закончена, я толкаю другой вид:

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) { 

    //.... 

    var alert = UIAlertController(title: "Alert", message: text, preferredStyle: UIAlertControllerStyle.Alert) 
    self.presentViewController(alert, animated: true, completion: nil) 


    dispatch_async(dispatch_get_main_queue(), { 
     if let cellToUpdate = tableView.cellForRowAtIndexPath(indexPath) { 
       self.performSegueWithIdentifier("postview", sender: self) 

     } 
    }) 
} 

I пытался остроумие dismissViewControllerAnimated но у меня точно такая же ошибка:

dispatch_async(dispatch_get_main_queue(), { 
      if let cellToUpdate = tableView.cellForRowAtIndexPath(indexPath) { 
        alert.dismissViewControllerAnimated(true, completion: nil) 
        self.performSegueWithIdentifier("postview", sender: self) 

      } 
     }) 

ответ

9

Вы не должны вызывать performSegueWithIdentifier прежде, чем предыдущий контроллер представления был уволен. Ко времени это правильно, это сделать из обработчика завершения:

dispatch_async(dispatch_get_main_queue(), { 
    if let cellToUpdate = tableView.cellForRowAtIndexPath(indexPath) { 
     alert.dismissViewControllerAnimated(true, completion: { 
      self.performSegueWithIdentifier("postview", sender: self) 
     }) 
    } 
}) 

Теперь вызов на выполнение SEGUE не начнется, пока увольнение не закончится, предотвращая ошибку, которую вы видите.

+0

Это работает! благодаря ! – cmii

+0

У меня тоже такая проблема, @ dasblinkenlight. Можете ли вы мне помочь? Вот моя ссылка: http://stackoverflow.com/questions/30840235/console-warning-in-my-custom-alert-controller-which- сказал-это была попыткой-к-Преса –