当前位置:  开发笔记 > 编程语言 > 正文

UIViewController没有加载我的自定义UIView

如何解决《UIViewController没有加载我的自定义UIView》经验,为你挑选了1个好方法。

这对于一个大师来说应该是直截了当的.我没有真正写出任何代码,只有几个控制器和一个自定义UIView.全部通过笔尖连接.该应用程序加载而不会崩溃,但我无法从我的自定义UIView中看到我的NSLog()命中.

我的应用程序委托具有默认模板代码,该代码调用我的一个名为TabAnimationController的类.TabAnimationViewController将其视图设置为TabView.我确保在TabAnimationViewController的NIB中,File的所有者设置为TabAnimationViewController,并且我的UIView实例将其类设置为TabView.

在TabView.m中,我试图了解NSLog将如何命中,并且它根本没有显示出来.

- (void)loadView {
 NSLog(@"calling loadView");
}

- (id)initWithFrame:(CGRect)frame {
NSLog(@"Calling initWithFrame:");
    return self;
}

奇怪.我不确定为什么即使在正确的IB连接之后我的NSLog也不会出现.只有任何放入drawRect的东西:才会调用.为什么initWithFrame或loadView不会受到影响?如果我想以编程方式自定义此视图,该怎么办?



1> keremk..:

首先,当一个视图是从笔尖脱水文件,而不是initWithFrame,initWithCoder被调用.因此,您还需要实现初始化initWithCoder.(initWithFrame如果您期望以编程方式创建TabView而不是在IB中挂钩,那么保持初始化也是一个好主意.只需将初始化重构为另一个方法并从两个实现中调用它.)

同样在上面的初始化代码中,您必须始终调用超类的初始化.所有自定义类在其init实现中都使用了锅炉板模式:

if (self = [super initXXX]) { do your initialization } 
return self;

其次,只有当控制器的出口为零时才调用loadView实际上是UIViewController方法而不UIView调用方法view.

除非您使用控制器以编程方式自己编写视图,否则无需覆盖loadView.相反,您应该覆盖viewDidLoad(在加载视图后调用)进行其他初始化.

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有