2011-03-18 3 views
0

У меня есть сегментированный элемент управления в контроллере View.Переключение в контроллер просмотра без использования контроллера UITabBar или Nav

Я хочу загрузить другой вид в середину, когда сегменты задействованы. Эффективно делает его контроллером панели вкладок. (Вопрос: почему бы не использовать контроллер бар вкладки, A: У меня уже есть один)

Вот мои требования:

  1. Я хочу использовать контроллеры просмотра во всем мире. Один контроллер супер-просмотра для управления сегментированным элементом управления. Два «контроллера подвидных представлений» для отображения содержимого при прослушивании сегментированного элемента управления.

  2. Я хочу, чтобы вид загружался/выгружался и другие сообщения приходили на контроллеры подвидных представлений, которые вы ожидаете.

  3. Я хочу аккуратное, элегантное решение. Минимальный взлом.

Моя текущая реализация не будет работать на точке 2:

- (IBAction)valueChanged:(id)sender { 

     switch (self.segmentedControl.selectedSegmentIndex) { 

      case 0: 
       { 
        ThirdVC* vc = [[ThirdVC alloc] initWithNibName:@"ThirdVC" 
            bundle:nil]; 
        [self.centerView addSubview:vc.view]; 

       } 
       break; 
       ... etc 

ответ

0

В вашем коде выше.

  1. Вы создаете новый контроллер на каждом кране и не отпускаете его. Это приведет к утечке памяти.

Решение.

Вы можете создать две переменные экземпляра UIViewController (означает: - Sub Viewcontrollers) для вашего контроллера супер view.

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

Вы можете слушать мнение сделал загрузки/выгрузки сообщений с помощью

- (Недействительными) viewWillAppear: (BOOL) анимированный

(аннулируются) viewWillDisappear: (BOOL) анимированные

методы Контроллер подматрицы.

Надеюсь, это поможет.

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