我有一个选项卡应用程序,并且在我的第一个视图上有一个按钮,我希望在按下时通过编程方式切换到我的第二个选项卡。
我似乎无法弄清楚如何获取索引等来切换它,我已尝试过类似以下的东西。
我似乎无法弄清楚如何获取索引等来切换它,我已尝试过类似以下的东西。
tababarController.selectedIndex = 1
没有成功。
tababarController.selectedIndex = 1
没有成功。
这很简单,tabBarController 声明为可选类型。
var tabBarController: UITabBarController? { get }
视图控制器层次结构中最接近的祖先是选项卡栏控制器。如果视图控制器或其任何祖先是选项卡栏控制器的子级,则此属性包含所属的选项卡栏控制器。如果视图控制器未嵌入选项卡栏控制器中,则此属性为nil。
因此,您只需要在其末尾添加“?”即可:
@IBAction func goToSecond(_ sender: Any) {
tabBarController?.selectedIndex = 1
}
Swift 3:
func switchToDataTab() {
Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil, repeats: false)
}
func switchToDataTabCont(){
tabBarController!.selectedIndex = 0
}
Swift 4+:
func switchToDataTab() {
Timer.scheduledTimer(timeInterval: 0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil, repeats: false)
}
@objc func switchToDataTabCont(){
tabBarController!.selectedIndex = 0
}
func switchToDataTab(){
NSTimer.scheduledTimerWithTimeInterval(0.2,
target: self,
selector: "switchToDataTabCont",
userInfo: nil,
repeats: false)
}
func switchToDataTabCont(){
tabBarController!.selectedIndex = 0
}
tableView.reloadData()
,UITableView
的状态仍然没有改变。感谢提供解决方法!你可能知道背后的原因或者有更好的解决方案吗? - Marcin Świerczyński添加到安东尼的代码中:
func switchToDataTab(){
NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil,repeats: false)
}
func switchToDataTabCont(){
tabBarController!.selectedIndex = 0
}
选择器类已更改为
#selector(switchToDataTabCont)
selectedIndex = 1
即可。 - Leo Dabus