Как удалить последнюю вкладку из uitabbarcontroller, если есть только три вкладки - PullRequest
0 голосов
/ 10 января 2012

Здесь я пытаюсь динамически добавить и удалить вкладку из контроллера uitabbar.

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

Первый вид - это вход в систему и примерно

После успешного входа в систему новые 3 вкладки.С последним как Больше и двумя другими.

В опции «Больше выхода из системы» после выбора этой опции я хочу удалить последнюю вкладку, а

заменить первые две снова входом в систему и О.то есть (Домашний вид)

Так что в моем коде я делаю так ........

/// AppDelegate.m

  • (BOOL) приложение: (UIApplication *) приложение didFinishLaunchingWithOptions: (NSDictionary *) launchOptions {

    // Точка переопределения для настройки после запуска приложения.

    self.window.rootViewController = tabBarCntr;tabBarCntr = [[UITabBarController alloc] init];LogonViewController * logon = [[LogonViewController alloc] init];logon.tabBarItem.title = @ "Logon";AboutViewController * about = [[AboutViewController alloc] init];about.tabBarItem.title = @ "О";tabBarCntr.viewControllers = [NSArray arrayWithObjects: sos1, about, nil];[релиз входа];[о выпуске];

    [self.window addSubview: tabBarCntr.view];

    [self.window makeKeyAndVisible];}

и в моем IBAction после успешного входа в систему установка новых viewcontrollers на tabbarcontroller

self.tabBarController.viewControllers = [NSArray

arrayWithObjects: newController1, newController2, newController2, newController1, newController1, newController1, newController1, newController1, newController2, newController2, newController2, newController2, newController2, newController2, newController2, newController2, newController2, newController2, newController2,] * * * * * * * * * * *., больше, ноль];

    Now in my loggoff i coding something like.....
       NSMutableArray *newArray;   
     newArray=[NSMutableArray arrayWithArray:self.tabBarController.viewControllers];
       [newArray replaceObjectAtIndex:0 withObject:logon];
       [newArray replaceObjectAtIndex:1 withObject:about];
       [newArray removeLastObject];
       self.tabBarController.selectedIndex=0;
       [self.tabBarController setViewControllers : newArray];


  but my applcation crash here after this ....
 can any has solution for this ...

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

Paggyyyyy

Редактировать: NSMutableArray arrayWithArray добавлено место для исправления кода

Ответы [ 2 ]

2 голосов
/ 10 января 2012

На мой взгляд, вы используете 2 отдельные вкладки BarControllers. один для входа и другой для приложения. после входа удалите и отпустите вкладку входа и добавьте вкладку приложения. И снова после выхода удалите и отпустите вкладку приложения и добавьте вкладку входа. Это облегчит доступ к вкладкам, вместо удаления / добавления контроллеров представления, переименования вкладок, изменения изображений вкладок.

0 голосов
/ 17 апреля 2012

Вы можете изменить контроллер панели вкладок с помощью свойства setViewControllers: animated: YES. Вы можете назначить новый массив там. Переключается соответственно.

[tabBarController setViewControllers: анимированный массив: ДА];

Есть одна важная ошибка. Я использую ручной подсчет ссылок, однако я использовал опцию автоматического выпуска для контроллеров представления, назначенных этому массиву, поскольку я использовал шаблон Xcode в качестве основы приложения. Они сохраняются только этим массивом. Если вы забудете сохранить все контроллеры представления, которые могут появляться в разных массивах вкладок в течение жизненного цикла приложения, возникает любопытный сбой памяти после изменения, во время изменения или даже инициализации массива. Поэтому необходимо сохранить ваши ссылки на эти контроллеры представления /

...