2013-02-28 5 views
1

Я испытываю необычное поведение на iPad в iOS 6.1.2 при использовании UITabBarController с UISplitViewController (с UITableViewController для контроллера главного представления). Если у меня есть несколько вкладок, из которых, по крайней мере, одна вкладка содержит контроллер разделенного представления, и я в ландшафтном режиме, просматривая вкладку, содержащую контроллер разделенного представления, затем переключаюсь на другую вкладку, затем перехожу в портретный режим, затем нажимаю вкладка, которая содержит контроллер разделенного представления, что происходит дальше, заключается в том, что контроллер главного представления (контроллер табличного представления) отобразит представление таблицы поверх верхнего представления, когда оно явно не должно быть там. Такое поведение происходит только в первый раз, когда приложение загружается, но является последовательным поведением.UITabBarController, содержащий UISplitViewController, неправильно обрабатывает вращение на iPad

Этот сценарий легко воссоздать, просто создав проект, который представляет собой приложение с разделенным видом, которое использует устройство iPad и основные данные (не пробовал его, не используя Core Data). После создания проекта используйте раскадровку и добавьте контроллер панели вкладок и сделайте его начальным контроллером представления, затем добавьте селектор контроллера вида от контроллера панели вкладок к контроллеру разделенного вида. После этого, только одно изменение необходимо в коде, который должен изменить одну строку в приложении: didfinishLaunchingWithOptions в AppDelegate.m:

Изменить следующий код шаблона:

UISplitViewController *splitViewController = (UISplitViewController *)self.window.rootViewController; 

To:

UITabBarController *tbc = (UITabBarController *)self.window.rootViewController; 
UISplitViewController *splitViewController = [tbc.viewControllers lastObject]; 

Возможно, я нарушаю некоторые правила iOS и пытаюсь сделать то, что я не должен? Все, что я хочу сделать, - это возможность вставить вкладку между несколькими разными контроллерами с раздельным представлением. Предложения?

ответ

3

Взгляните на этот Git.

https://github.com/nalyd88/DCToolkit/tree/master/DCToolkit/DCToolkit

Из того, что я понимаю, что проблема связана с контроллером вида разделенного не обновляя его ориентации, когда он не виден.

Здесь используется подклассовный контроллер представления таблиц и контроллер разделенного вида, которые передают сообщение.


Благодаря Dylan at http://objectiveseesharp.wordpress.com/ для этого решения! Я просто нашел его.

+0

Добро пожаловать :) – nalyd88