gpt4 book ai didi

ios - PerformSegueWithIdentifier 无法始终如一地工作

转载 作者:搜寻专家 更新时间:2023-11-01 07:29:31 24 4
gpt4 key购买 nike

我没有在我的项目中使用任何导航 Controller 。这个项目是网上拿来的,是Swift的侧边栏菜单。在侧边栏菜单中,有一个表格 View ,每一行都将 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)
}

Storyboard

enter image description here

资源取自here .

最佳答案

试试看:

    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) }

关于ios - PerformSegueWithIdentifier 无法始终如一地工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33539198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com