2014-01-02 3 views
9

У меня есть раскадровка в Xcode5, где у меня есть UITabbarController, у которого есть UINavigationController, который связан с UIViewController. С этого последних UIViewController остальных (UIPageviewController и UITableViewController создаются программно в соответствующих классах. Смотрите скриншот.Изменить название UINavigationController при изменении UIPageViewController

Storyboard image of viewcontrollers

Проблема настройка названия UINavigationController, когда страница из UIPageViewController изменений. Я хочу название, чтобы отразить @property на UITableViewController классе, но я не уверен, как это сделать.

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

Надеюсь, кто-то может дать мне указатель, где искать или какой метод или делегат использовать.

ответ

10

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

Сначала убедитесь, что вы установили self.pageViewController.delegate для себя.

Вот что я сделал:

// Notice when the pageviewcontroller finishes animating between pages. 
- (void)pageViewController:(UIPageViewController *)pageViewController 
    didFinishAnimating:(BOOL)finished 
    previousViewControllers:(NSArray *)previousViewControllers 
    transitionCompleted:(BOOL)completed { 

    // .viewControllers[0] is always (in my case at least) the 'current' viewController. 
    UIViewController* vc = self.pageViewController.viewControllers[0]; 
    self.navigationItem.title = vc.navigationItem.title; 
} 

«тайной» является то, что (по крайней мере, в простой салфетке-влево-вправо случае с размером страниц полноэкранными у меня есть), что self.pageViewController.viewControllers [ 0] - это текущая страница.

Чтобы использовать ваше свойство, а не название navigationItem, просто измените последнюю строку на нечто вроде self.navigationItem.title = ((MyViewController *) vc) .myProperty;

+1

Отлично, это работает как шарм! Большое спасибо за помощь. :) – Hugo

+0

Нет проблем. Удачи с приложением. –

Смежные вопросы