performSegueWithIdentifier 触发,但不显示
Posted
技术标签:
【中文标题】performSegueWithIdentifier 触发,但不显示【英文标题】:performSegueWithIdentifier Firing, But Not Displaying 【发布时间】:2016-03-05 08:42:34 【问题描述】:非常抱歉在此添加另一篇文章,但我已阅读所有其他解决方案,但没有任何效果。我有一个非常简单的场景。
MasterViewController 将一堆自定义 UIButtons 添加到视图中。这完美地显示出来。当我的自定义按钮被调用时,我将按钮路由回 MasterViewController 以转换下一个 SecondViewController 以显示在其自身之上。
我的代码是这样的:
[自定义按钮设置功能]
func setup()
self.masterViewController = self.storyboard.instantiateViewControllerWithIdentifier("MasterView") as! MasterViewController
func clicked()
self.masterViewController.transition("SecondViewSegue") // matches the segue identifier perfectly
[MasterViewController 功能]
func transition(segueName: String)
dispatch_async(dispatch_get_main_queue(),
self.performSegueWithIdentifier(segueName,sender: self)
);
我已确认:
自定义 UIButton 触发 performSegueWithIdentifier 正在触发 MasterViewController 的 prepareForSegue 正在触发 viewDidLoad() 函数在 SecondViewController 中触发我尝试过的事情:
重新连接 Segue 确认的拼写相同(见上述表现) 尝试使用和不使用 dispath_async 命令(同样,全部触发)确实不再涉及代码。我很困惑。
提前谢谢你。
【问题讨论】:
【参考方案1】:通过右键单击 MyStoryBoard->Open As->Source Code 检查情节提要的源代码。
搜索:trigger="accessoryAction"
如果你找到它,删除它。
有时 ctrl+拖动会添加此附加属性,导致 prepareForSegue 出现问题。
【讨论】:
没有找到,但这是一个我不知道的很酷的功能。【参考方案2】:好的,我发现了我的问题。我不小心创建了原始 UIViewController 的新实例。因此,即使函数正在调用,它也没有引用屏幕上的 viewController。
【讨论】:
以上是关于performSegueWithIdentifier 触发,但不显示的主要内容,如果未能解决你的问题,请参考以下文章
performSegueWithIdentifier 出现运行时错误,为啥?
iOS8 performSegueWithIdentifier 运行太慢
performSegueWithIdentifier:sender: 找不到我的转场
unwind segue / performSegueWithIdentifier: 问题
performSegueWithIdentifier 不起作用
performSegueWithIdentifier:从 didSelectRowAtIIndexPath 调用的方法缓慢显示视图