0

示例:我创建了一组最小的文件来突出此处的问题:http: //uploads.omega.org.uk/Foo3.zip

如果调用 viewDidLoad/viewInitWithNibName,则会显示一个消息框。不显示消息框,因此不调用方法。

详细信息:我有一个应用程序正在尝试使用 UITabBarController 在多个视图之间切换。

使用界面构建器将视图链接到 UITabBarController(选择标签页,打开属性(Option-1),并填写 NIB 名称字段),因此“自动”显示,无需额外的代码隐藏来制作它们出现。

像这样加载的视图没有执行其 viewDidLoad 方法是预期的行为吗?如果没有,我怎么做错了,我需要改变什么。

如果这是预期的行为,我可以想到一些解决方法,但任何建议都值得赞赏:

  1. 废弃 UITabBarController 并自己实现视图切换(使用 initWithNibName 和 add/insert/push/Subview)。
  2. 在 UITabBarController 自己的 viewDidLoad 方法中手动调用每个孩子的 viewDidLoad 方法。

提前感谢您提供的任何帮助。

4

2 回答 2

1

好的,我已经设法解决了这个问题。

将 NIB 链接到 TabBarController 是不够的 - 您还需要链接文件中的代码,即使您正确设置了文件所有者,NIB 也不会隐式链接它。

打开 IB,然后选择相关页面。单击中间以选择视图控制器。输入子视图的 NIB 名称,然后转到最后一页(选项 4)。在“类标识”中,输入子视图 NIB 的代码隐藏文件的名称。

现在一切都会很好地工作。

我已经上传了示例代码的正确版本:http: //uploads.omega.org.uk/Foo3-Correct.zip

于 2010-03-26T02:38:27.347 回答
0

您没有在项目中的任何地方实例化 ImportedView,因此它没有调用 initXXX 或 viewDidAnything。如果您将警报代码放在 -[FirstViewController viewDidLoad] 中,它将按预期触发。

于 2010-03-24T02:56:45.643 回答