1

一切都在故事板中,使用非常标准的布局。 故事板图片

UISplitViewController带有一个详细视图控制器,UINavigationController其中加载了我的自定义UITableViewController. 只有viewDidLoadin the customUITableViewController永远不会触发。

viewWillAppear按预期触发,其他一切正常。视图显然已加载(唯一不起作用的是我在其中设置的通知viewDidLoad),我的回调在哪里?

我的viewDidLoad方法... viewDidLoad 代码 断点,NSLog...如果执行此方法,这些东西不可能不给我反馈。

4

4 回答 4

5

我尝试通过使用拆分视图模板创建一个新项目来重新创建我的故事板。然后复制所有适当的视图控制器。它按预期工作。(viewDidLoad正常调用)。

我并排比较了项目之间的所有 IB 连接......没有区别。然后我拿走了我原来的项目,并一一删除了所有连接,然后重新连接它们(与它们连接的完全相同的东西)。完成后,我运行代码,一切正常。viewDidLoad叫。

我尝试在非工作故事板版本和工作版本之间进行差异,因为没有什么不同,但显然有些不同。我无法确定它的正面或反面 尽管 XML 的大部分内容是相同的,但许多位是 XML 文件的不同部分,这使得标准差异变得不切实际。这更像是一个拼图游戏,试图找到这些位相互匹配的位置,一个小时后我什么也没找到,我放弃了。

所以一个可怕的不令人满意的答案。它与 IB 相关,最有可能是出口(但我确实也重新输入了类名和东西......再次相同)。很可能是我的错误,而不是 Xcode 的错误,但看起来我无法确定确切的原因。

感谢您的建议,他们帮助我寻找导致解决方案的各个方向。

于 2013-03-18T14:03:45.373 回答
1

我怀疑您希望viewDidLoad在它已经加载并且刚刚从主视图控制器更新时被调用。在这种情况下,它不必从 nib/storyboard 重新加载,因此viewDidLoad不会被调用。

将日志语句放入viewDidLoad,您将看到它至少被调用一次。

于 2013-03-15T08:37:04.690 回答
1

检查您的视图控制器子类的名称是否与另一个类冲突。

在我的例子中,我心不在焉地保留了自动生成的项目类前缀“MP”,因此项目的根视图控制器子类是 MPViewController。

MPViewController 没有在任何地方记录,但是因为问题仅在链接到 MediaPlayer 框架时才发生,所以可以肯定的是,它是在某处定义的,并且在加载 Storyboard 时,应用程序创建了它的实例而不是我的自定义类的实例。

于 2013-04-20T20:18:42.330 回答
1

您可能在创建项目后创建了 Storyboard 文件。如果是这样,您应该从 AppDelegate.m 文件中删除字符串:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];

于 2014-02-07T12:12:11.790 回答