视图在屏幕上,但self.view.window仍为零

时间:2015-02-26 09:36:55

标签: ios objective-c

我有一个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)时,才会调用该方法。这有什么问题?

由于

1 个答案:

答案 0 :(得分:1)

将代码移至viewDidAppear(或仅调用[self updateUI]的位。)

加载仅仅意味着它已从NIB反序列化,而出现意味着它是视图层次结构的一部分。