我在我的项目中没有使用任何导航控制器。这个项目是在线获取的是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)
}
故事板
资源来自here。
答案 0 :(得分:2)
尝试使用:
dispatch_async(dispatch_get_main_queue(), {});
以下是关于" bug"的一些信息。但是我认为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)
with:
NSOperationQueue.mainQueue().addOperationWithBlock {
self.performSegueWithIdentifier(segueName as String, sender: self) }