视图在屏幕上显示,但 self.view.window 仍为 nil。

4

我有一个视图控制器,假设它的名称是FooViewController,并且它有一个属性:

@property (nonatomic, strong) NSAttributedString *foo;

我希望在视图出现时更新用户界面,因此viewDidLoadfoosetter应该像这样:

- (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个回答

5

将代码移到 viewDidAppear 中(或仅移动调用 [self updateUI] 的那部分代码)。

Loading 只是表示该代码已从 NIB 中反序列化,而 appearing 表示它是视图层次结构的一部分。


你的意思是viewDidAppear。 - Gary Riches
1
谢谢。你真的很快地“移动”了 ;) - WangYudong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接