我有一个带有两个视图的简单应用程序。当我启动到主视图时,会调用viewDidLoad
和viewDidAppear
。当我在我的应用程序中转到另一个视图时,它调用super.viewDidLoad
并调用func,但它也从主视图调用viewDidAppear
。我找不到任何命令来调用它(搜索整个代码库)。什么可能导致这个额外的电话?
*其他测试*
我添加了断点以找到问题。
1)家庭电话:viewdidLoad,然后viewdidappear
2)点击链接到详细信息视图
3)这调用deatailview viewdidload调用super(aka home)视图加载
4)主视图确实加载完成,然后主视图显示为
5)home viewdid出现错误
为什么家庭viewdidappear后来被称为?
答案 0 :(得分:1)
如你所说,' home'是你的细节的超级班级。查看控制器" deatailview super(又名家庭) "。 你要么没有实现viewDidAppear,要么在'详细信息中调用super.viewDidAppear。 vc,因此是超类' (家庭vc' s)viewDidAppear被执行。
答案 1 :(得分:0)
父类代码
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
}
儿童类代码
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
}
解释
Home类是超类,而Child类是第一次调用超类的viewDidLoad和viewDidAppear时加载超类视图的子类。 当我们点击链接它移动到详细视图时,它调用viewDidLoad(子类) - > viewDidLoad(超类)和viewDidAppear(子类) - > viewDidAppear(超类)