Как смоделировать поведение UITabBarViewController? - PullRequest
0 голосов
/ 01 декабря 2010

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

Мне нужна настроенная «панель вкладок», которая содержит любой вид, который я хочу. А также мне нужно подтолкнуть контроллеры представления, оставив эту настраиваемую панель вкладок фиксированной в своем положении.

Я видел множество приложений, которые делают это, и мне было интересно, было ли использование различных объектов UIWindow (один для пользовательской панели вкладок и другой для контента).

Любой совет или руководство по этому поводу?

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

Ответы [ 2 ]

1 голос
/ 03 декабря 2010

Определенно не UIWindows - в приложении для iPhone должно быть только одно UIWindow.

Я бы создал подкласс UIViewController, в котором ваш новый пользовательский интерфейс панели навигации находился вверху, а UIView - под ним. Это представление будет использоваться для хранения всех представлений контроллеров, которые вы собираетесь использовать в нем. В представлении clipsToBounds будет установлено значение YES, чтобы другие виды контроллеров не перекрывали панель навигации и т. Д.

В нем также будет массив для хранения списка контроллеров, которые в данный момент находятся внутри него.

Ваш контроллер будет реализовывать pushViewController: animated: методы и т. Д., Чтобы позволить вам добавлять другие контроллеры представления в стек - вы бы добавили новый контроллер в ваш массив и добавили бы его представление как подпредставление представления вашего контроллера.

Тем не менее, на самом деле достаточно много работы, чтобы сделать это хорошо - навигационный контроллер будет выдавать дочерние представления контроллера при предупреждениях о нехватке памяти, обрабатывать поворот, анимировать представления включения / выключения и т. Д. Вы на 100% уверены, что это то, что хочешь сделать?

0 голосов
/ 03 декабря 2010

Я использовал очень простой подход.Я подкласс UITabbarController и во время init:

    //  Custom TabBar View
    //
    self.tabBar.hidden = YES;
    MyTabBarView *myTabBarView = [[MyTabBarView alloc] initWithFrame:CGRectMake(0, 1024-44, 768, 44) // it'a an iPad app
                                                       configuration:configuration]; // an array of dictionary representing the view controllers
    [self.view addSubview:myTabBarView];
    [bottomBarView release];

затем загружаю некоторые контроллеры представления с:

aViewController.hidesBottomBarWhenPushed = YES; 

Из экземпляра MyTabBarView я выполняю на UITabBarViewController:

setSelectedIndex:

Таким образом, у меня есть настраиваемое полноэкранное приложение без усилий.

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