Переключить панель вкладок программно в Swift
У меня есть приложение панели вкладок, и у меня есть кнопка в первом представлении, которую я хочу, чтобы при нажатии переключать на вторую вкладку программно в панели вкладок.
Я не могу понять, как получить индекс и т. Д., Чтобы переключиться на него, я пробовал что-то вроде этого.
tababarController.selectedIndex = 1
Без успеха.
4 ответа
Это довольно простой tabBarController объявлен как необязательный тип
var tabBarController: UITabBarController? { get }
Ближайший предок в иерархии контроллера представления, который является контроллером панели вкладок. Если контроллер представления или один из его предков является дочерним элементом контроллера панели вкладок, это свойство содержит собственный контроллер панели вкладок. Это свойство равно nil, если контроллер представления не встроен в контроллер панели вкладок.
Так что вам просто нужно добавить "?" в конце этого:
@IBAction func goToSecond(_ sender: Any) {
tabBarController?.selectedIndex = 1
}
Обновленный ответ Энтони на Swift3
func switchToDataTab() {
Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil, repeats: false)
}
func switchToDataTabCont(){
tabBarController!.selectedIndex = 0
}
Решение, предоставленное Лео Дабусом (см. Выше), прекрасно работает для меня. Однако - некоторые элементы управления имеют плохие состояния. Не могу это исправить, но этот маленький обходной путь пойдет вам на пользу:
func switchToDataTab(){
NSTimer.scheduledTimerWithTimeInterval(0.2,
target: self,
selector: "switchToDataTabCont",
userInfo: nil,
repeats: false)
}
func switchToDataTabCont(){
tabBarController!.selectedIndex = 0
}
Добавить к коду Энтони:
func switchToDataTab(){
NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil,repeats: false)
}
func switchToDataTabCont(){
tabBarController!.selectedIndex = 0
}
Где класс селектора был изменен на
#selector(switchToDataTabCont)