Подавить moreNavigationController в пользовательском UITabBarController

Я реализовал специальное решение UITabBar для проекта. По сути, если элементов более 5, я использую scrollView, который позволит пользователю прокручивать дополнительные элементы вкладки и подавляет кнопку «Дополнительно». Аналогичный внешний вид можно увидеть в приложении Weather Channel.

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

Я переопределил метод setSelectedViewController следующим образом.:

- (void) setSelectedViewController:(UIViewController *)selectedViewController {
    [super setSelectedViewController:selectedViewController];
    if ([self.moreNavigationController.viewControllers count] > 1) {
        self.moreNavigationController.viewControllers = [[NSArray alloc] initWithObjects:self.moreNavigationController.visibleViewController, nil];
    }
}

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

6
задан Ben M 1 May 2012 в 20:45
поделиться