在 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(使用前将#替换为@)