Валентин, чтобы прямо ответить «почему это так?», Я думаю, что ответ просто в том, что это ошибка в реализации их API.
, как вы, кажется, обнаружили, когда в альбомной ориентации, он вызывает вышеупомянутое, когда кажется, что это не должно, а затем вызывает splitViewController: willShowViewController: invalidatingBarButtonItem:.
также, я обнаружил, что в портретной ориентации он отправляет очень раннее сообщение (т.е.до того, как view.frame был настроен) на splitViewController:willHideViewController:withBarButtonItem:forPopoverController:
.
, что меня больше всего раздражало, так это то, что при использовании кода, предоставленного при создании их шаблона, панель кнопок появлялась и затем исчезалапри запуске.
Мое решение состояло в том, чтобы реализовать обходной путь, который я разместил на git@github.com: johnkdoe / freeforall.git в классе KludgeWorkaroundForBuggySplitViewDelegateStartup.
сделать это суперклассом вашеготекущий класс контроллера подробного представления, как в
//@interface MyViewController : UIViewController<UISplitViewControllerDelegate>
@interface MyViewController : KludgeWorkaroundForBuggySplitViewDelegateStartup
, это установит начальный прикладНа панели заголовок Мастер, если у вас нет того, что вы предпочитаете.вы можете переопределить это, переопределив метод @property в вашей реализации подкласса.если вы хотите сделать больше, чем то, что есть в этом классе kludgeWorkaround, вы можете переопределить их самостоятельно и (либо скопировать и вставить, либо) вызвать [super ...] их перед выполнением своей собственной работы.
я могуНельзя сказать, что это решает проблему того, что мне кажется ошибкой реализации, но обходной путь избавляет от краткого появления панели кнопок при запуске приложения контроллера сплит-представления в ландшафтном режиме.