为啥loadview中的self.view.tag和其他的不一样

Posted

技术标签:

【中文标题】为啥loadview中的self.view.tag和其他的不一样【英文标题】:Why self.view.tag in loadview is different with others为什么loadview中的self.view.tag和其他的不一样 【发布时间】:2013-09-06 16:50:39 【问题描述】:

self.view.tag 在 loadView 中设置为 10,但在 viewDidload 它的 tag 为 0 为什么 ?谢谢

- (void)loadView

    [super loadView];
    NSLog(@"loadView %d",self.view.tag);
    [self.view setTag:10];
    self.view = [[UIView alloc] initWithFrame:self.view.frame];
    self.view.backgroundColor = [UIColor yellowColor];


#pragma mark view loaded

- (void)viewDidLoad

    [super viewDidLoad];
    NSLog(@"ViewDidload %d",self.view.tag);
    [self.view setTag:10];

【问题讨论】:

你能给我们看看代码吗? 一小时后仍然没有代码:投票关闭 - (void)loadView [super loadView]; NSLog(@"loadView %d",self.view.tag); [self.view setTag:10]; self.view = [[UIView alloc] initWithFrame:self.view.frame]; self.view.backgroundColor = [UIColor yellowColor]; #pragma 标记视图已加载 - (void)viewDidLoad [super viewDidLoad]; NSLog(@"ViewDidload %d",self.view.tag); [self.view setTag:10]; 我将您的代码粘贴到问题中并正确格式化。不幸的是,Stack Overflow 不支持 blink 标签。 【参考方案1】:

通常不实现 loadView 方法。系统调用它以创建您的视图层次结构。在它被调用的时候,你的视图将不存在。

为什么要实现 loadView?你可能不应该。

引用文档:

如果您使用 Interface Builder 创建视图并初始化 视图控制器,你不能重写这个方法。

您在 loadView 方法中添加了什么代码?

【讨论】:

如何解释这个方法- (void)loadView [super loadView]; NSLog(@"loadView %d",self.view.tag); [self.view setTag:10]; self.view = [[UIView alloc] initWithFrame:self.view.frame];

以上是关于为啥loadview中的self.view.tag和其他的不一样的主要内容,如果未能解决你的问题,请参考以下文章

loadView 方法中的 MKMapView

单元测试(Kiwi):调用 loadView 和 viewDidLoad 后,测试中的属性始终为零

如何在“loadView”之外创建的按钮方法中更改“self.view”

为啥 UIWebView 不滚动?

将 func loadview 中声明的 self.view 约束到视图控制器的部分区域

loadView的使用总结