Отмените выбор или отмените выбор всех вкладок на панели вкладок в iOS 5

Я новичок в разработке iOS, и я начал непосредственно с IOS 5. Я создал раскадровку, которая состоит из контроллера tabview в качестве его rootviewcontroller. Я поставил на него 2 вкладки.

Сначала я хочу отменить выбор всех вкладок. Как мне это сделать? Я пробовал следующее

 UIView *view = [[UIView alloc]initWithNibName:@"view" bundle:[NSBundle mainBundle]];
    [self.tabBarController setSelectedViewController:nil];
    [self.tabBarController setSelectedViewController:view];

где я добавил представление с идентификатором «представление».

Но это не сработало, выдает ошибку:

 unrecognized selector sent to instance

Я также пробовал следующее

[self.tabBarController.tabBar setSelectedItem:nil];

но он говорит

«NSInternalInconsistencyException», причина: «Прямое изменение панели вкладок, управляемой контроллером панели вкладок, не разрешено».

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


person Nik    schedule 27.03.2012    source источник


Ответы (5)


Я использую это, чтобы очистить любые выбранные tabBarItems

[myTabBar setSelectedItem:nil];
person HurkNburkS    schedule 13.06.2012
comment
Любой способ установить его анимированным? - person Deepak Sharma; 10.11.2014

Старый вопрос. Просто для записи: вы не можете отменить выбор всех вкладок, если панель вкладок управляется TabBarController. Метод:

[self.tabBar setSelectedItem:nil];

Работает только, если панель вкладок не управляется контроллером панели вкладок. Если это так, отменить выбор всех вкладок невозможно, всегда должна быть выбрана одна.

person tomidelucca    schedule 11.07.2012

Это немного хуево. Но я просто устанавливаю цвет оттенка в -viewWillAppear на серый, когда хочу, чтобы он выглядел так, будто выделения нет, а затем устанавливаю цвет оттенка обратно на «выбранный» цвет, когда я хочу показать выделение.

// since we cant turn off tabbar selection, change the color to make
// it look like nothing was selected.
self.tabBarController.tabBar.tintColor = [UIColor grayColor];  
-----------
// make sure tintcolor is turned on (just in case another module turned it off
self.tabBarController.tabBar.tintColor = self.view.tintColor;
person Mc.Stever    schedule 16.10.2016

Я нашел решение, которое, вероятно, не лучший способ сделать это, но оно сработало для меня ([self.tabBar setSelectedItem:nil]; не сработало). Я помещаю свое представление вкладки в родительское представление (myTabBarViewContainer), а затем, когда я хочу отменить выбор своих элементов, я вызываю removeFromSuperview в родительском представлении и повторно запускаю его:

[self.myTabBarViewContainer.view removeFromSuperview];

Затем перезапустите его и вуаля!

Не очень красиво, но работает...

person DavidTw    schedule 17.06.2013

Вам нужно использовать UITabBar. Не UITabBarController

отменить выбор или отменить выбор элемента панели вкладок swift 3.0

tabbar_Main.selectedItem = nil
person Anit Kumar    schedule 07.02.2017