【问题标题】:How can I hide/dismiss container with embedded uiViewController when user presses the button inside of it? [duplicate]当用户按下其中的按钮时,如何隐藏/关闭带有嵌入式 uiViewController 的容器? [复制]
【发布时间】:2025-12-12 20:40:01
【问题描述】:

我有一个非常简单的应用程序,其中有一个名为 Outer 的 UIViewController。我在该控制器上放置了一个容器,并在该容器内嵌入了另一个名为 Inner 的 UIViewController

默认情况下,Inner 是隐藏的,并且 Outer 有一个按钮,当用户按下它时,它会在屏幕上显示 Inner(通过将其属性 hidden 更改为 false)。

由于我将一些数据从外部传递到内部,因此这是我目前的代码:

外部.swift:

class Outer: UIViewController, ContainerToMaster {

    var containerViewController: Inner?

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "requestDetailsSegue" {
            containerViewController = segue.destinationViewController as? Inner
            containerViewController!.containerToMaster = self
        }
    }

    @IBAction func openInnerButtonAction(sender: AnyObject) {
        containerViewController?.changeLabel(description)
        inner.hidden = false
    }
}      

Inner.swift:

protocol ContainerToMaster {
    func changeLabel(text:String)
}

class Inner: UIViewController {

    @IBOutlet weak var eventDescr: UILabel!

    var containerToMaster:ContainerToMaster?

    func changeLabel(description: String) {
        eventDescr.text = description
    }

}

现在我想向内部面板添加一个按钮,在用户按下它后将其关闭。最好的方法是什么?

【问题讨论】:

    标签: ios swift uiviewcontroller


    【解决方案1】:

    unwind segue(又名退出转场)可用于在推送转场、模式转场或弹出转场转场中导航。点击here了解更多。

    【讨论】:

    • 如果你觉得这个问题是重复的,你应该把它标记为重复。
    • 伙计们,我不知道它是重复的,我在 Stack 上找不到任何关于它的信息,这就是我问这个问题的原因。凯末尔的回答对我很有用,我使用了他指出的答案,解决了我的问题。我会将其标记为正确答案,但如果您觉得有义务,请随时将我的问题标记为重复。问候
    最近更新 更多