我正在使用 Xcode View 编辑器和 Swift。
我的主视图包含一个带有 2 个选项卡的选项卡栏 Controller 。
在第二个选项卡上,我有一个 @IBoutlet var myLabel: UITextLabel!
。在 viewWillAppear
中,我在此标签中放置了一些文本。
在第一个选项卡上,我有一个按钮,它通过 Push segue 启动第三个 View ,在这个新选项卡上,我有一个返回按钮,它让我回到包含选项卡栏 Controller 的主视图(通过推送segue 也是)。
当我启动我的应用程序时,进入我的第二个选项卡,UITextLabel
的文本已更改。
我仍然可以转到我的第一个选项卡并在它们之间导航它有效。
但问题是当我单击第一个选项卡的按钮,然后单击取消,然后返回到我的第二个选项卡时,我的 UITextLabel 没有改变。而且我无法再对其执行任何操作。虽然它不是零,但它就像它仍然连接到 segue 之前的第一个 UITextLabel 而不是这个。
我哪里错了?
最佳答案
有几处是错误的。
对于选项卡式应用程序,Apple 表示选项卡栏 Controller 应该是应用程序的根级导航方法。它应该始终存在,并且用户应该始终能够点击另一个点击以切换到应用的另一部分。
所以第一个选项卡应该连接到导航 Controller 。当用户按下按钮时,您应该将一个新的 View Controller 推送到该导航 Controller 上。标签栏仍然可见并启用,用户仍然可以切换到 View Controller 一。
下一步:
你说“我有一个后退按钮,它让我回到包含标签栏 Controller 的主视图(也通过推送转场)。”
这是非常错误的。后退按钮应该从当前导航堆栈中弹出一个 View 。他们不应该插入任何事情。任何时候你使用 push segue,你都在创建和推送一个全新的 View Controller 实例,并将其他 View Controller 留在导航堆栈中。
关于ios - 在 Segue 之后丢失@IBOutlets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46880030/