使用非常标准的布局,一切都在故事板中。
带有UISplitViewController
详细视图控制器的 UINavigationController
,用于加载我的自定义UITableViewController
。只有自定义viewDidLoad
中的UITableViewController
才会触发。
viewWillAppear
按预期发射,其他一切都完美无缺。清楚地加载了视图(唯一不起作用的是我在viewDidLoad
中设置的通知),我的回调在哪里?
我的viewDidLoad
方法......
断点,NSLog
...如果执行此方法,这些东西都不会给我反馈。
答案 0 :(得分:4)
我尝试使用拆分视图模板创建一个新项目来重新创建我的故事板。然后复制所有适当的视图控制器。它按预期工作。 (viewDidLoad
正常调用。)
我将所有项目之间的IB连接并排比较......没有区别。然后,我接受了原始项目并逐个删除了所有连接,然后重新连接它们(与它们连接的完全相同的东西)。当我完成后,我运行代码,一切正常。 viewDidLoad
致电。
我尝试在非工作故事板版本和工作版本之间做差异,因为没有什么应该是不同的,但显然有些东西。我无法做出它的正面或反面虽然大部分XML都是相同的,但许多位是XML文件的不同部分,这使得标准差异变得不切实际。这更像是一个试图找到彼此匹配的地方的拼图游戏,我在一小时没找到任何东西后放弃了。
这是一个非常令人难以置信的答案。它与IB有关,很可能是出口(但我确实重新输入了类名和东西......再次相同)。最有可能是我的错误而不是Xcode,但看起来我不能确定原因。
感谢您的建议,他们帮助我了解导致解决方案的各个方向。
答案 1 :(得分:1)
我怀疑你期待viewDidLoad
在已加载时被调用,并且可能只是从主视图控制器更新。在这种情况下,它不必从nib / storyboard重新加载,因此不会调用viewDidLoad
。
将日志语句放入viewDidLoad
,您将看到它至少被调用一次。
答案 2 :(得分:1)
检查视图控制器子类的名称是否与另一个类发生冲突。
在我的情况下,我心不在焉地保留了自动生成的项目类前缀'MP',因此项目的根视图控制器子类是MPViewController。
MPViewController没有在任何地方记录,但因为只有在链接到MediaPlayer框架时才会出现问题,所以可以安全地确定它是在某处定义的,当故事板被加载时,应用程序创建了一个实例,而不是我的自定义实例类。
答案 3 :(得分:1)
您可能在创建项目后创建了Storyboard文件。如果是这样,您应该从AppDelegate.m文件中删除字符串:
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];