所以我试图使用导航控制器从一个UIViewController切换到另一个。我肯定知道新控制器会成功通过自定义init方法并创建两个UIBarButtons。但是,屏幕上的内容(4个标签,3个文本字段,1个UIImageView)没有显示。相反,我只是看到一个灰色屏幕。
通过ViewDidLoad,ViewWillLoad和ViewWillAppear传递NSLog消息表明所有这些都已成功执行。
如果您想看一下,这是gitHub仓库:https : //github.com/Killavata/Class_Discussion/tree/Stepan
这是我用来传递新控制器的代码:
// Create a new student and add it to the store
Student* newStudent = [[StudentStore sharedStore] createStudent];
StudentDetailViewController *detailViewController = [[StudentDetailViewController alloc] initForNewStudent:YES];
detailViewController.student = newStudent;
detailViewController.dismissBlock = ^{
[self.tableView reloadData];
};
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:detailViewController];
navController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:navController animated:YES completion:NULL];
您已在情节提要中创建了控制器,因此,除非从那里进行实例化(使用segue或InstantiateViewControllerWithIdentifier :),否则将无法获得其视图。如果要使用自定义init方法,则需要用代码(在loadView中)制作整个UI,或者在xib文件中创建视图,加载该笔尖,然后将视图设置为控制器的self.view。
另一种方法是不使用自定义init方法。创建一个属性isNew,并在实例化控制器之后但在呈现它之前设置其值。在viewDidLoad中检查其值,然后将现在拥有的代码放入viewDidLoad的init方法中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句