在 Segue 之后丢失@IBOutlets

Losing @IBOutlets after Segue

我正在使用 Xcode 视图编辑器和 Swift。

我的主视图包含一个带有 2 个选项卡的选项卡栏控制器。 在第二个选项卡上,我有一个 @IBoutlet var myLabel: UITextLabel!。在 viewWillAppear 我在这个标签里放了一些文字。

在第一个选项卡上,我有一个按钮可以通过 Push segue 启动第三个视图,在这个新选项卡上,我有一个后退按钮可以让我返回到包含选项卡栏控制器的主视图(通过也有推 segue)。

当我启动我的应用程序时,进入我的第二个选项卡,UITextLabel 的文本已更改。 我仍然可以转到我的第一个选项卡并在它们之间导航它有效。 但问题是当我单击第一个选项卡的按钮,然后单击取消,然后返回到我的第二个选项卡时,我的 UITextLabel 没有改变。而且我无法再对其执行任何操作。虽然它不是零,但它就像它仍然连接到 segue 之前的第一个 UITextLabel 而不是这个。

我哪里错了?

有几处不对。

对于选项卡式应用程序,Apple 表示选项卡栏控制器应该是应用程序的根级导航方法。它应该始终存在,并且用户应该始终能够点击另一个点击以切换到应用程序的另一部分。

所以第一个选项卡应该连接到导航控制器。当用户按下按钮时,您应该将一个新的视图控制器推送到该导航控制器上。选项卡栏仍然可见并启用,用户仍然可以切换到视图控制器一。

下一件事:

你说"I have a Back button which gets me back to the main view containing a tab bar controller (through a push segue too)."

这是非常错误的。后退按钮应该从当前导航堆栈中弹出一个视图。他们不应该推动任何事情。任何时候你使用 push segue,你都在创建和推送一个全新的视图控制器实例,并将其他视图控制器留在导航堆栈中。