ios什么时候调动loadview
2016-03-16 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
iewDidLoad 方法只有当 view 从 nib 文件初始化的时候才被调用。viewDidLoad 用于初始化,加载时用到。
loadView 方法在控制器的 view 为 nil 的时候调用。 此方法用于以编程的方式创建 view 的时候用到。loadView 是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于代码写的控件。用于使用代码生成控件的函数。
loadView 方法在控制器的 view 为 nil 的时候调用。 此方法用于以编程的方式创建 view 的时候用到。loadView 是使用代码生成视图的时候,当视图第一次载入的时候调用的方法。用于代码写的控件。用于使用代码生成控件的函数。
2016-04-05 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
关注
展开全部
先看代码, 新建一个UIViewController的子类TestViewController(包含nib文件),imageViewCourse和lbCourse是其两个属性,通过nib的IBOutlet方式添加。
TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@TestViewController bundle:nil];
testViewController.imageViewCourse.image = image;
testViewController.lbCourse.text = course;
[self.navigationController presentViewController:testViewController animated:YES completion:nil];
我们使用nib来加载一个TestViewController并对其属性赋值, 然后跳转。问题在于执行完initWithNibName之后,testViewController.imageViewCourse和testViewController.lbCourse都为nil, 则表现出来的是跳转到TestViewController之后,, 其中的imageViewCourse和lbCourse中没有内容。
解决方法
使用loadView方法触发nib中UIView的加载。
@property(null_resettable, nonatomic,strong) UIView *view; // The getter first invokes [self loadView] if the view hasn't been set yet. Subclasses must call super if they override the setter or getter.
- (void)loadView; // This is where subclasses should create their custom view hierarchy if they aren't using a nib. Should never be called directly.
- (void)loadViewIfNeeded NS_AVAILABLE_IOS(9_0); // Loads the view controller's view if it has not already been set.
即:
TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@TestViewController bundle:nil];
//[testViewController view];
//[testViewController loadView];
[testViewController loadViewIfNeeded];
testViewController.imageViewCourse.image = image;
testViewController.lbCourse.text = course;
[self.navigationController presentViewController:testViewController animated:YES completion:nil];
TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@TestViewController bundle:nil];
testViewController.imageViewCourse.image = image;
testViewController.lbCourse.text = course;
[self.navigationController presentViewController:testViewController animated:YES completion:nil];
我们使用nib来加载一个TestViewController并对其属性赋值, 然后跳转。问题在于执行完initWithNibName之后,testViewController.imageViewCourse和testViewController.lbCourse都为nil, 则表现出来的是跳转到TestViewController之后,, 其中的imageViewCourse和lbCourse中没有内容。
解决方法
使用loadView方法触发nib中UIView的加载。
@property(null_resettable, nonatomic,strong) UIView *view; // The getter first invokes [self loadView] if the view hasn't been set yet. Subclasses must call super if they override the setter or getter.
- (void)loadView; // This is where subclasses should create their custom view hierarchy if they aren't using a nib. Should never be called directly.
- (void)loadViewIfNeeded NS_AVAILABLE_IOS(9_0); // Loads the view controller's view if it has not already been set.
即:
TestViewController *testViewController = [[TestViewController alloc] initWithNibName:@TestViewController bundle:nil];
//[testViewController view];
//[testViewController loadView];
[testViewController loadViewIfNeeded];
testViewController.imageViewCourse.image = image;
testViewController.lbCourse.text = course;
[self.navigationController presentViewController:testViewController animated:YES completion:nil];
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有xib时ViewDidLoad同样也会被调用;
两者的区别,主要在于:loadview是在xib加载前调用,ViewDidLoad是在xib加载后调用,没有xib时,两者其实是等价的。
两者的区别,主要在于:loadview是在xib加载前调用,ViewDidLoad是在xib加载后调用,没有xib时,两者其实是等价的。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询