【问题标题】:How to get a ViewController to segue to itself repeatedly.如何让 ViewController 重复地与自身进行 segue。
【发布时间】: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。我不想走这条路,因为它看起来需要大量的补丁工作。

【问题讨论】:

    标签: swift segue viewcontroller


    【解决方案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.
    猜你喜欢
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多