iOS: скрыть rootViewController из SplitView в приложении TabBar - PullRequest
1 голос
/ 03 августа 2011

У меня есть приложение TabBar для iPad с Split Controller в первой вкладке.Я следую этой инструкции, чтобы сделать это:

http://www.iphonedevsdk.com/forum/iphone-sdk-development/62217-simplest-way-make-split-controller-tab-bar-controller.html

Теперь моя цель состоит в том, чтобы спрятать контроллер корневого представления контроллера разделения.Я нашел способ сделать это:

http://vimeo.com/13054813

Но это не работает для меня, потому что это работает только при условии, что контроллер разделения находится в MainWindow.xib.Но в предыдущем методе контроллер сплита добавляется программно.

Может ли кто-нибудь помочь мне достичь цели?Любая идея будет оценена.

Заранее спасибо!


Вот код:

http://dl.dropbox.com/u/27695108/MariCruz.zip

Я надеюсь, что вы можете помочьменя.

Спасибо!

1 Ответ

1 голос
/ 09 августа 2011

У вас есть пара проблем с вашим проектом.

1 Во-первых, вы используете UITabBarController, поэтому код, который вы нашли, чтобы скрыть контроллер корневого представления, не работает.

  1. Второй лежит с вашей реализацией makeSplitViewController, где вы дважды инициализируете свои splitViewController, rootViewController и detailViewController.

Итак, вам нужно исправить пункт 2, чтобы вы могли правильно управлять всеми этими контроллерами, а затем вам следует изменить toggleSplitView, чтобы вы учитывали тот факт, что вы используете UITabBarController. Например, замените первые несколько строк этого метода следующими:

- (void)toggleSplitView {

    NSArray *controllers = _tabBarController.viewControllers;
    UIViewController* controller = [controllers objectAtIndex:1];

    if (controller.view == splitViewController.view) {

        [splitViewController.view removeFromSuperview];

        splitViewController.viewControllers = [NSArray arrayWithObjects:rootViewController, rootViewController, nil];

        splitViewController.view = detailViewController.view;

} else {
       ....

Как вы говорите, у меня нет доступа к _window, чтобы проверить, есть ли там UISplit, потому что это представление не в _window, а в панели вкладок. Другая ветвь if также должна быть переписана в соответствии с теми же критериями, но я оставлю ее для вас.

Приведенный выше код будет работать только с вашей второй вкладкой (той, которая соответствует индексу 1); действительно, поскольку вы перезаписываете splitViewController в makeSplitViewController, я могу использовать только элемент с индексом 1 на панели вкладок, не внося дальнейших изменений.

...