假设项目正在使用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;

10-07 21:08