我正在使用Xcode视图编辑器和Swift。
我的主视图包含一个带有2个标签的标签栏控制器。
在第二个标签上,我有一个@IBoutlet var myLabel: UITextLabel!
。在viewWillAppear
内,我在此标签中添加了一些文字。
在第一个标签上,我有一个按钮,通过Push segue启动第三个视图,在这个新标签上,我有一个Back按钮,让我回到包含标签栏控制器的主视图(通过推送也是如此。
当我启动我的应用时,进入我的第二个标签,UITextLabel
的文字已更改。
我仍然可以转到我的第一个标签并在它们之间导航它有效。
但问题是当我点击我的第一个标签按钮,然后点击取消,然后回到我的第二个标签,我的UITextLabel没有改变。我不能再对它采取任何行动了。虽然它不是零,但它仍然像它在segue之前仍然连接到第一个UITextLabel而不是这个。
我哪里错了?
答案 0 :(得分:1)
有些事情是错的。
使用选项卡式应用程序,Apple表示标签栏控制器应该是应用程序的根级导航方法。它应该始终存在,并且用户应该始终能够点击另一个点击以切换到应用程序的另一部分。
因此第一个选项卡应该连接到导航控制器。当用户按下按钮时,您应该将新的视图控制器推到该导航控制器上。标签栏仍然可见并启用,用户仍然可以切换到查看控制器一。
接下来的事情:
你说“我有一个后退按钮,让我回到包含标签栏控制器的主视图(通过push segue)。”
这是非常错误的。后退按钮应弹出当前导航堆栈的视图。他们不应该推动任何东西。无论何时使用push segue,您都要创建并推送视图控制器的全新实例,并将其他视图控制器留在导航堆栈中。