Предполагая, что проект использует ARC. ContentViewController является содержание UIPopoverControllerПередача данных в ViewController, который является содержимым 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];
метка не получает обновления. Я просто хотел бы понять, в чем дело?
Я не уверен в последовательности событий с пирогом, но ключевым моментом является то, что ContentViewController в 'viewDidLoad:' это первое место, где его вид иерархия гарантированно существует , Вы можете попробовать поставить сообщение журнала там, а другое, где вы выполняете задание, чтобы посмотреть, что происходит. (Или запишите значение 'cvc.dateLabel', когда вы выполняете задание.) –
Благодарим вас за ответ. Я ошибаюсь в том, что эти метки в ContentViewController являются Outlet и объявлены как @property (слабый, неатомный) IBOutlet UILabel * dateLabel; и это было ноль. Но для меня непонятно, почему это работает, если я назначаю текст после инициализации. UIPopoverController – Michael
. Вероятно, станет ясно, если вы поместите оператор журнала в 'viewDidLoad:' и рядом с вашим назначением. Если ваше задание ** после ** 'viewDidLoad:' оно будет работать. –