在我的iPhone应用程序中
我有两个视图控制器。
他们有SuperClass-SubClass Relation。(继承)。
假设ViewController1是一个SuperClass而ViewController2是一个SubClass。
他们都共享一个超级类的公共nib文件。
所以,理想情况下,ViewController1的所有方法都继承到ViewController2(如果我没有在ViewController2中重写它)。
所以,要检查这个当我
我的viewcontroller2加载未从超类调用的viewDidLoad。
**ViewController1
-ViewDidLoad
-ViewWillApper
**ViewController2
Other methods but I am not writing ViewDidLoad and ViewWillAppear
//---------------
所以,当调用这个单独的页面ViewController2时。 ViewDidLoad不是SuperClass的调用。 但是调用了ViewWillAppear。
答案 0 :(得分:1)
可能只调用-viewDidLoad:
一次,因为在两个类之间共享同一个nib文件。在第一次将笔尖加载到内存后,调用-viewDidLoad:
。它不是第二次被调用,因为它只是从已经存在的内存中重用,因此不需要重新加载。这可以解释为什么仍然会调用-viewWillAppear:
。
UIViewController Class Reference: -viewDidLoad:
viewDidLoad
在控制器的视图加载到内存后调用。
- (无效)viewDidLoad中
讨论
在视图控制器将其关联的视图加载到内存后调用此方法。调用此方法 无论视图是存储在nib文件中还是创建 以编程方式在loadView方法中。这种方法最常见 用于对视图执行其他初始化步骤 从nib文件加载。
答案 1 :(得分:0)
你怎么能说你的ViewController1
和ViewController2
有继承?发布ViewController2.h
文件的代码。
你在做什么
@interface ViewController2 : ViewController1 {
}
如果您正在执行上述操作,则只能说您从VC1继承了VC2。只有这样,您才能调用VC1的viewDidLoad
。
如果您只使用1个xib文件和2个VC,那么您所讨论的案例并不意味着您继承。
当你写
ViewController1 *vc1 = [[ViewController1 alloc] initWithNibName:@"ViewController1"];
和
ViewController2 *vc2 = [[ViewController2 alloc] initWithNibName:@"ViewController1"];
这意味着您重复使用.xib文件并且不继承该类...