Содержит UISplitView, не отправляющий методы делегата - PullRequest
0 голосов
/ 09 июня 2011

UISplitView имеет следующие методы делегата, которые помогают модифицировать макет во время вращения:

- (void)splitViewController:(UISplitViewController *)svc 
     willHideViewController:(UIViewController *)aViewController 
          withBarButtonItem:(UIBarButtonItem *)barButtonItem 
       forPopoverController: (UIPopoverController *)pc;

- (void)splitViewController:(UISplitViewController *)svc 
     willShowViewController:(UIViewController *)aViewController 
  invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem;

эти методы соответственно вызываются методами, приватными для UISplitView с именами _viewControllerHiding: и _updateMasterViewControllerFrame. Оба они вызываются непосредственно из верхней части цикла событий, по-видимому, с отложенным вызовом.

Но если я помещу свой собственный контроллер представления в качестве корня окна (вы не можете поместить контроллер разделения представления в контроллер навигации) и поместите разделенное представление, подчиненное ему, методы делегата не будут отправлены надлежащим образом. (На самом деле, один отправляется в viewDidLoad, но ни один в поворотах.) Скрытие главного представления все еще происходит, но никому из делегатов не нравится помощь в макете (управление элементами всплывающего окна / панели).

Я попытался перенаправить следующие методы контроллера представления в автономное разделенное представление, но они не запускают его.

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation;
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
                                duration:(NSTimeInterval)duration;
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
                                         duration:(NSTimeInterval)duration;

Кто-нибудь знает, как заставить эти методы делегата UISplitView запускать? Желательно не частный API.

1 Ответ

0 голосов
/ 09 июня 2011

Взгляните на Комбинированные интерфейсы контроллера представления , и вы увидите, что контроллеры разделенного представления не должны содержаться внутри любого другого типа контроллера представления. Вы нарушаете это правило, помещая его в свой собственный контроллер представления, поэтому неудивительно, что оно не работает хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...