UIViewController:viewWillAppear被调用,viewDidAppear没有被调用

2024-02-08

在 UIViewController 子类中,我有以下方法:

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    // do something
    myTextField.text = @"Default";
}

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    // do something
    [myTextField selectAll:self];
    [myTextField becomeFirstResponder];
}

- (void)viewDidLoad {
    [super viewDidLoad];    
    // do something
    myTextField.delegate = self;
}

NIB 是使用 Interface Builder 创建的。导航控制器通过pushViewController推送对应的视图控制器对象。

预期行为是在文本字段中显示默认文本条目、选择整个文本并将文本字段设置为第一响应者。 [编辑:我注意到选择所有and使第一响应者没有意义,因为选择会消失;尽管如此,我还是想知道为什么这些方法的行为如下所述。]

然而,当调用 viewDidLoad 和 viewWillAppear 方法时,不会调用 viewDidAppear 方法。有人能告诉我为什么吗?我在网上找到的大多数问题以及这里涉及 viewWillAppear/viewDidAppear 的问题都不起作用;我还了解到,在子视图或以编程方式创建的视图中,不会调用这些方法;但这不适用于这种情况,而且我想知道为什么会引发其中一种“生命周期”方法,而另一种则不会。

任何想法?谢谢!


我遇到过这个问题:viewWillAppear正在被呼叫但是viewDidAppear不是!

我终于明白这是因为我有一个tabBarController我超载了它自己的地方viewDidAppear并忘记了[super viewDidAppear:animated];

它抛弃了每一个VC在每个选项卡中!添加该行以修复我的其他行VC's.

希望这对某人有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIViewController:viewWillAppear被调用,viewDidAppear没有被调用 的相关文章

随机推荐