Правильный способ настроить UISegmentedControll на UINavigationController UINavigationBar все внутри UITabBarController - PullRequest
2 голосов
/ 21 января 2010

Название в значительной степени описывает все это.

Проблема заключается в обработке обратных вызовов UISegmentedControll (нажатие кнопок). Если бы тип содержимого всех вложенных представлений был одинаковым (то есть некоторые UITableViewControllers), то я мог бы просто переключить dataSource и перезагрузить таблицы.

Однако это не тот случай, у меня есть 3 очень разных представления, которые позволяют дальнейшее углубление / взаимодействие на основе NavigationControllers.

Таким образом, у меня есть этот настроенный ATM, так как существует класс-контейнер, в который я помещаю все UINavigationControllers. Все они используют один и тот же UISegmentedController, и я перенаправляю обратные вызовы в контроллер представления контейнера. Это не очень хорошо.

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

Вот картина того, чего я хочу достичь:

alt text

Ответы [ 2 ]

0 голосов
/ 24 мая 2010

Я столкнулся с похожим требованием к функции в недавнем приложении для iPad, решение, которое я использовал, находится по следующей ссылке - по сути, я реализовал «управляющий» контроллер представления, который добавляет / удаляет подпредставления на основе выбранного индекса сегментированный элемент управления с правильной обработкой событий.

Я решил проблему с контроллером навигации, передав «управляющий» контроллер представления в контроллеры представления subview в качестве параметра, и заставив эти контроллеры перезвонить родительскому элементу для добавления в стек навигации.

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

Подробности здесь: UISegmentedControl Best Practice

Хороший вопрос, надеюсь, это поможет.

0 голосов
/ 22 января 2010

В одном из моих приложений у меня есть одно табличное представление, которое заполняется данными трех отдельных NSMutableArrays. Я условно устанавливаю содержимое ячейки в cellForRowAtIndexPath и условно получаю 3 разных -счета в numberOfRowsInSection. Хотя это не совсем то, что вы ищете, вам не нужно иметь 3 разных источника данных, как указано в вашем первоначальном примере.

Ваши инстинкты верны. Это кажется слишком сложным.

Как насчет использования одного NavigationController и простой замены addSubview / removeFromSuperview на NavigationController.view?

...