Подтвердить что ты не робот

Переключить панель вкладок программно в Swift

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

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

tababarController.selectedIndex = 1

Без успеха.

4b9b3361

Ответ 1

Thats довольно простой tabBarController объявлен как необязательный тип

var tabBarController: UITabBarController? { get }

Ближайший предок в иерархии диспетчера представлений, который является контроллером панели вкладок. Если диспетчер представлений или один из его предков является дочерним элементом контроллера панели вкладок, это свойство содержит управляющий элемент панели вкладок. Это свойство равно нулю, если контроллер просмотра не встроен в контроллер панели вкладок.

Вам просто нужно добавить "?" в конце:

@IBAction func goToSecond(_ sender: Any) {
    tabBarController?.selectedIndex = 1
}

Ответ 2

Свифт 3:

func switchToDataTab() {
    Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil, repeats: false)
}

func switchToDataTabCont(){
    tabBarController!.selectedIndex = 0
}

Свифт 4+:

func switchToDataTab() {
        Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil, repeats: false)
    }

@objc func switchToDataTabCont(){
        tabBarController!.selectedIndex = 0
    }

Ответ 3

Решение, предоставленное Лео Дабусом (см. выше), отлично подходит для меня. Однако некоторые элементы управления имеют плохие состояния. Не могу это исправить, но это небольшое обходное решение поможет вам всем:

func switchToDataTab(){
    NSTimer.scheduledTimerWithTimeInterval(0.2,
        target: self,
        selector: "switchToDataTabCont",
        userInfo: nil,
        repeats: false)
}

func switchToDataTabCont(){
    tabBarController!.selectedIndex = 0
}

Ответ 4

Добавить в код Энтони:

func switchToDataTab(){
    NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil,repeats: false)
}

func switchToDataTabCont(){
    tabBarController!.selectedIndex = 0
}

Если класс селектора был изменен на

#selector(switchToDataTabCont)