假设项目正在使用ARC。
ContentViewController是UIPopoverController的内容
- (IBAction)showPop:(UIButton *)button
{
_pressDate = [NSDate date];
ContentViewController *cvc = [[InfoViewController alloc] initWithNibName:@"ContentViewController" bundle:nil];
self.popController = [[UIPopoverController alloc] initWithContentViewController:cvc];
cvc.dateLabel.text = [_pressDate description];
[self.popController presentPopoverFromRect:button.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];
}
上面的代码有效,没问题。但我注意到如果我打电话
cvc.dateLabel.text = [_pressDate description];
之前
self.popController = [[UIPopoverController alloc] initWithContentViewController:cvc];
标签没有更新。我只想了解是怎么回事?
最佳答案
有一个经验法则是,在运行viewDidLoad之前,请勿编辑ViewController的UI,这是由于描述了@Phillip Morris
的其他原因所致。不是在触发viewDidLoad之前直接设置cvc.dateLabel.text
,而是声明属性textForDateLabel
,并且设置cvc.textForDateLabel = [_pressDate description];
。
然后在ContentViewController的viewDidLoad
中,执行self.dateLabel.text = textForDateLabel;