PerformSegueWithIdentifier не работает последовательно

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

Проблема:

Первые несколько кликов по tableViewCell работают как шарм, он может закрыть меню всего одним кликом. Но после этого нужно дважды щелкнуть tableViewCell, чтобы закрыть меню.

Требуется два щелчка, чтобы закрыть меню: (сначала щелкните tableViewCell, viewController исчезнет, ​​второй щелчок на tableViewCell закроет меню)

NavigationViewController(меню боковой панели)

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

    self.snapshot.removeFromSuperview()
    var segueName: NSString = "";

    if (indexPath.row == 0) {
        print("ROW 1")
        segueName = "listview"

    }
    if (indexPath.row == 1) {
        print("CLICK ROW 2")
        segueName = "othernav"
    }

    self.performSegueWithIdentifier(segueName as String, sender: self)
}

Раскадровка

введите здесь описание изображения

Ресурсы взяты из здесь.


person FlowCastv    schedule 05.11.2015    source источник


Ответы (1)


Попробуйте с:

    dispatch_async(dispatch_get_main_queue(), {}); 

Вот некоторая информация о "баге". Но я думал, что Apple исправила это...

http://openradar.appspot.com/19563577

Ваш код должен выглядеть так:

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
self.snapshot.removeFromSuperview()
var segueName: NSString = "";

if (indexPath.row == 0) {
    print("ROW 1")
    segueName = "listview"

}
if (indexPath.row == 1) {
    print("CLICK ROW 2")
    segueName = "othernav"
}

dispatch_async(dispatch_get_main_queue(), {}); 
self.performSegueWithIdentifier(segueName as String, sender: self)
}

Если это не сработает, вы можете попробовать это:

Заменять

dispatch_async(dispatch_get_main_queue(), {}); 
    self.performSegueWithIdentifier(segueName as String, sender: self) 

с:

   NSOperationQueue.mainQueue().addOperationWithBlock {
              self.performSegueWithIdentifier(segueName as String, sender: self) } 
person Godlike    schedule 05.11.2015