【问题标题】:Prepare doesn't get called on segue (Swift 4.2)准备不会被调用 segue (Swift 4.2)
【发布时间】:2019-01-01 18:34:32
【问题描述】:

我在这里搜索了答案,但找不到与我完全相同的问题,请帮我解决一下。

问题是,当我创建一个单独的视图并尝试使用故事板和导航视图控制器制作一个转场时,转场本身可以正常工作,但是

override func prepare(for segue: UIStoryboardSegue, sender: Any?)

不会被调用。为了让我的示例尽可能地少,我制作了一个玩具应用程序来展示正在发生的事情。

That's how the overall storyboard schema looks like. ViewController is embedded in NavigationController.

Segue is made with ctrl + SecondViewController, identifier is set.

Custom class for SecondViewController is set.

视图控制器具有以下实现:
主视图控制器设置唯一按钮的标题:

class ViewController: UIViewController {

    @IBOutlet weak var button: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        button.setTitle("Awesome title", for: .normal)
    }
}

按下按钮时,标签将根据按钮的标题进行更新:

class SecondViewController: UIViewController {
    @IBOutlet weak var label: UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
        print("SecondViewController viewDidLoad method")
    }

    // MARK: - Navigation

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        print(print("SecondViewController prepare method"))
        if let text = (sender as? UIButton)?.titleLabel?.text {
            label.text = text
        }
    }
}

我故意放了两个打印语句来表明viewDidLoad实际上被调用了,而不是prepare

Here is a gif showing how the app works. 您可能会看到第二个视图上的标签也没有更新。

我也试过设置seguethis way,然后创建@IBAction函数并手动调用performSegue

@IBAction func onButton(_ sender: UIButton) {
    performSegue(withIdentifier: "Id", sender: self)
}

请帮助我理解和解决问题。谢谢。

【问题讨论】:

    标签: navigation segue xcode10 swift4.2


    【解决方案1】:

    好的,我知道出了什么问题。对于那些仍然对 IOS 中的 segues 工作方式感到困惑的人,请查看下图:

    Segues in IOS(取自here

    请注意,prepare (for: sender) 位于视图 A,而不是视图 B。这很关键,因为它在执行实际 segue 之前被触发。此外,如果您为 View B 参数分配一些值(例如 UIIMageView),则视图会在考虑这些更改的情况下呈现。

    【讨论】:

      猜你喜欢
      • 2017-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 2014-07-25
      • 2017-10-21
      • 1970-01-01
      相关资源
      最近更新 更多