如何让 ViewController 重复地与自身进行 segue。

Posted

技术标签:

【中文标题】如何让 ViewController 重复地与自身进行 segue。【英文标题】:How to get a ViewController to segue to itself repeatedly. 【发布时间】:2016-04-20 15:46:01 【问题描述】:

SWIFT:在我的故事板中,嵌入在 NavigationController 中,我有一个 ViewcontrollerA,它需要重复呈现自己或基于 if 子句呈现 ViewcontrollerB。

我已经在 prepareForSegue 方法中实现了逻辑。我已经从 ViewcontrollerA 到 ViewControllerB 画了一个segue。

    if (someClause == true)
    
        let svc = segue.destinationViewController as! ViewControllerA

     else 

        let svc = segue.destinationViewController as! ViewControllerB          
    

执行此代码会导致以下错误: 无法将“ViewControllerB”类型的值转换为“ViewControllerA”。

那是因为从 ViewControllerA 到 ViewControllerA 没有 segue。转场是从 ViewControllerA 到 ViewControllerB。

有没有办法让一个“按钮”拥有多个 segue?一个到 ViewControllerA(本身),一个到 ViewControllerB。我知道这对于 TableViewCells 是可能的。

旁注,我已经设法获得了 instantiateViewControllerWithIdentifier,然后调用了 presentViewController 来做我想做的事,但这会破坏我的 NavigationStack 和 TabBar。我不想走这条路,因为它看起来需要大量的补丁工作。

【问题讨论】:

【参考方案1】:

您应该在 ViewControllerA 和 ViewControllerB 之间创建一个 segue,而不是在 ViewControllerB 之间创建一个按钮。然后执行以下操作:

@IBAction func buttonPressed(sender: UIButton) 

if (someClause == true)
        
            // Stay on ViewControllerA

         else 

            performSegueWithIdentifier("showB", sender: AnyObject)         
        


        override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) 
        if (segue.identifier == "showB") 
            let _ = segue.destinationViewController as? ViewControllerB
        
    

【讨论】:

如何创建 ViewControllerA 的新实例并继续使用它?例如,当“someClause == true) 时,我需要创建一个新的 ViewControllerA。我可以创建一个从 ViewControllerA 到 ViewControllerA 的 segue 吗? ViewControllerA 中有哪些数据?它是一个表视图吗?为什么需要创建它的新实例。 是的,它是一个表格视图...我想创建一个新实例,所以 1) 导航控制器工作正常。 IE。从堆栈中推送和弹出。 2)所有变量都被重置。 我倾向于只说 create 和 updateUI() 函数并执行 tableView.reloadData() 来完成此操作。但是,您是说它应该有一个返回到以前版本的 ViewControllerA 的按钮吗?也许你可以提供屏幕截图。 感谢您的及时回复!是的,导航返回按钮应该带我回到 ViewControllerA 的先前版本。所以 ViewControllerA(0) ViewControllerA(1) ...... ViewControllerA (n) ViewControllerB.

以上是关于如何让 ViewController 重复地与自身进行 segue。的主要内容,如果未能解决你的问题,请参考以下文章

使用 P/Invoke 从 Unity 高效地与非托管代码对话

如何将用户从非 UIView 类推送到 ViewController [重复]

如何最好地与客户分享 iOS 应用程序进度

如何仅在 iOS 中制作一个 ViewController 肖像 [重复]

在 ViewControllers 之间共享信息 [重复]

按下单元格内的图像时显示 ViewController [重复]