У нас есть UISplitViewController, и при условии X нам нужно отобразить UIPopover из одного из UIBarButtonItem в главном представлении.
Предположительно, чтобы иметь правильный кадр / макет, мы делаем этот кодиз события viewDidLoad контроллера главного представления.Каким-то образом в первый раз, когда отображается UISplitViewController, кадр Master равен 1024x724, тогда как мы ожидаем, что он будет 320x724.В результате при вызове [UIPopover presentFromBarButtonItem:] используется неправильная ссылка, и поскольку это правый BarButtonItem, всплывающее окно появляется полностью справа от экрана (примерно при x = 980px)
Если мызадержите отображение на долю секунды (через таймер / задержку, sooo dirty ), тогда все в порядке.
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
CGRect masterViewFrame = self.view.frame;
NSLog(@"Master View Frame: %@", NSStringFromCGRect(masterViewFrame));
if (someCondition) {
[self showPopover:self.theBarButton];
}
}
NSLog здесь показывает 1024x724 @ 0x0
Мысли?