假設該項目正在使用ARC。 ContentViewController是UIPopoverController將數據傳遞給作爲UIPopoverController內容的ViewController
- (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];
標籤沒有得到更新。我只是想明白髮生了什麼事情?
我不知道有酥料餅的,但關鍵點事件的順序是,ContentViewController的'viewDidLoad中:'就是它的視圖層次是保證存在首位。你可以嘗試在那裏寫一條日誌消息,在另一個地方做你的任務,看看發生了什麼。 (或者,在作業時記錄'cvc.dateLabel'的值。) –
謝謝你的回答。這是我的錯誤是,ContentViewController中的這些標籤是一個Outlet,並聲明爲@property(弱,非原子)IBOutlet UILabel * dateLabel;它是零。但是我不清楚的是,爲什麼它在初始化後分配文本時會起作用UIPopoverController – Michael
如果你在'viewDidLoad:'中放置了一條日誌語句並且你的任務旁邊可能會很清楚。如果你的任務**在**'viewDidLoad:'之後,它就會工作。 –