我在尝试呈现新的视图控制器时调用此方法。注释掉的线条是我试过的其他事情没有成功。
-(void)presentMailBoxViewController{
TPMailBoxViewController* mailBoxViewController=[[TPMailBoxViewController alloc]initWithNibName:@"TPMailBoxViewController" bundle:nil];
[self.navigationController pushViewController:mailBoxViewController animated:YES];
//[self.navigationController presentViewController:mailBoxViewController animated:YES completion:NULL];
//[self presentViewController:mailBoxViewController animated:YES completion:NULL];
}
我已将文件所有者设置为相应的视图控制器。
我甚至将xib的视图对象链接到我的视图控制器中作为属性。
但是,当我打破[self.navigationController pushViewController:mailBoxViewController animated:YES];
视图控制器的view属性为nil。是什么给了什么?
答案 0 :(得分:1)
“UIViewController
”已经有“view
”属性,因此您不需要“myView
”。
打开您的故事板或XIB文件,并确保您希望与您一起显示的“view
”在故事板或XIB文件中连接到TPMailBoxViewController对象。
在“initWithNibName
”之后,视图控制器对象存在,但其“view
”属性可能为零,因为尚未加载视图。
当您推送视图控制器时,就是当您的“TPMailBoxViewController
”将调用“viewWillLoad
”和“viewWillAppear
”方法时加载视图后,“view
”插座将从nil
更改为真实。
答案 1 :(得分:0)
一个项目干净,我的presentMailBoxViewController中的这一行更改修复了我的问题。仍然想知道为什么。谢谢大家!
-(void)presentMailBoxViewController{
TPMailBoxViewController* mailBoxViewController=[[TPMailBoxViewController alloc]initWithNibName:@"TPMailBoxViewController" bundle:nil];
[self presentViewController:mailBoxViewController animated:YES completion:NULL];
}
答案 2 :(得分:0)
在AppDelegate中,您需要将窗口的根对象设置为导航控制器。你可以这样做: -
YourViewController *rootObj = [[LoginViewController alloc] init];
UINavigationController *navObj = [[UINavigationController alloc] initWithRootViewController:rootObj];
[self.window setRootViewController:navObj];
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
在此之后,尝试按下viewcontroller,它应该工作