我一直在寻找有类似问题的其他用户,但这些建议似乎都不起作用。我的问题是我正在开发一个iPad应用程序,在工作流程的某一点上,用户可以生成一个模态对话框。但是,对话框从不显示(屏幕变暗表示发生了某些事情)。
我像这样生成对话框:
ASecondaryImplantChooserDialog* secondaryImplantChooserDialog = [self.storyboard instantiateViewControllerWithIdentifier:@"ASecondaryImplantChooserDialog"];
[secondaryImplantChooserDialog setModalPresentationStyle:UIModalPresentationFormSheet];
[secondaryImplantChooserDialog setDefinesPresentationContext:YES];
[self presentViewController:secondaryImplantChooserDialog animated:YES completion:nil];
我应该注意,类名和故事板标识符在设计上是相同的。
secondaryImplantChooserDialog的viewDidLoad(...)方法会被调用,但其他方法不会被调用(例如viewWillLayoutSubviews)。我使用相同类型的代码在应用程序的其他部分中生成其他对话框,这使我认为故事中有关控制器配置的故事,但是,我已经从生成的对话框的配置中复制该配置,无效。有什么想法吗?
更新:
感谢Yuandra Ismiraldi的建议,我能够诊断出视图层次结构。我确实在打印输出中看到了相关的视图。在预感中,我从故事板中删除了视图,并创建了一个新视图。这解决了这个问题。
答案 0 :(得分:1)
如果调用viewDidLoad,则加载视图。那么问题是视图控制器的状态究竟是什么(它是隐藏的还是屏幕外的)。我建议您首先尝试按照此线程How do I inspect the view hierarchy in iOS?
中的描述检查视图控制器层次结构答案 1 :(得分:1)
您还可以在viewDidLoad
中显示视图控制器,该控制器无效。 viewDidAppear
确实有效,尽管您需要注意不要多次出现,因为它被频繁调用。