Swift - 从另一个类调用ViewDidAppear

时间:2014-12-09 10:15:14

标签: ios xcode swift viewdidload viewdidappear

我有一个带有两个视图的简单应用程序。当我启动到主视图时,会调用viewDidLoadviewDidAppear。当我在我的应用程序中转到另一个视图时,它调用super.viewDidLoad并调用func,但它也从主视图调用viewDidAppear。我找不到任何命令来调用它(搜索整个代码库)。什么可能导致这个额外的电话?

*其他测试*

我添加了断点以找到问题。

1)家庭电话:viewdidLoad,然后viewdidappear

2)点击链接到详细信息视图

3)这调用deatailview viewdidload调用super(aka home)视图加载

4)主视图确实加载完成,然后主视图显示为

5)home viewdid出现错误

为什么家庭viewdidappear后来被称为?

2 个答案:

答案 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(超类)