2015-11-05 2 views
1

Я не использую какой-либо контроллер навигации в своем проекте. Этот проект взят онлайн - это меню боковой панели для Swift. В меню боковой панели есть табличный вид, и каждая строка будет performSegueWithIdentifier.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) 
} 

Раскадровка

enter image description here

Ресурсы взяты с here.

ответ

2

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

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) } 
Смежные вопросы