我有一个ViewController,比方说FooViewController
,它有一个属性:
@property (nonatomic, strong) NSAttributedString *foo;
我希望在视图显示时更新用户界面,因此viewDidLoad
和foo的setter
是这样的:
- (void)viewDidLoad
{
[super viewDidLoad];
self.foo = [[NSAttributedString alloc] initWithString:@"test" attributes:@{ NSForegroundColorAttributeName : [UIColor greenColor]} ];
}
- (void)setFoo:(NSAttributedString *)foo
{
_foo = foo;
if (self.view.window) [self updateUI];
}
当视图在屏幕上时我会调用updateUI
方法,但事实并非如此。仅当我删除if (self.view.window)
时,才会调用该方法。这有什么问题?
由于
答案 0 :(得分:1)
将代码移至viewDidAppear
(或仅调用[self updateUI]
的位。)
加载仅仅意味着它已从NIB反序列化,而出现意味着它是视图层次结构的一部分。