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

Wan*_*ong 4 objective-c ios

假设我有一个 ViewController,FooViewController它有一个属性:

@property (nonatomic, strong) NSAttributedString *foo;
Run Code Online (Sandbox Code Playgroud)

我想在视图出现时更新 UI,所以viewDidLoad和 foosetter是这样的:

- (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];
}
Run Code Online (Sandbox Code Playgroud)

我预计updateUI当视图在屏幕上时会调用该方法,但事实并非如此。仅当我删除时if (self.view.window),才会调用该方法。这里有什么问题?

谢谢

tro*_*foe 5

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

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