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 正在触发 MasterViewControllerprepareForSegue 正在触发 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 调用的方法缓慢显示视图