タブバーアプリケーションがあり、タブバーでプログラムで2番目のタブに切り替えると、最初のビューにボタンがあります。
私はインデックスなどを取得してそれに切り替える方法を理解することはまったくできないようです。私はこのようなものを試しました。
tababarController.selectedIndex = 1
成功なし。
これは非常に単純なtabBarControllerがオプションの型として宣言されている
var tabBarController: UITabBarController? { get }
View Controller階層でTab Bar Controllerである最も近い祖先。 View Controllerまたはその祖先の1つがTab Bar Controllerの子である場合、このプロパティには所有Tab Bar Controllerが含まれます。 View ControllerがTab Bar Controller内に埋め込まれていない場合、このプロパティはnilです。
したがって、「?」を追加するだけです。最後に:
@IBAction func goToSecond(_ sender: Any) {
tabBarController?.selectedIndex = 1
}
スウィフト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
}
Leo Dabusが提供するソリューション(上記参照)は、私にとってはうまく機能します。ただし、一部のコントロールには悪い状態があります。それを修正することはできませんが、この小さな回避策はすべてあなたに良いでしょう:
func switchToDataTab(){
NSTimer.scheduledTimerWithTimeInterval(0.2,
target: self,
selector: "switchToDataTabCont",
userInfo: nil,
repeats: false)
}
func switchToDataTabCont(){
tabBarController!.selectedIndex = 0
}
Anthonyのコードに追加:
func switchToDataTab(){
NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: #selector(switchToDataTabCont), userInfo: nil,repeats: false)
}
func switchToDataTabCont(){
tabBarController!.selectedIndex = 0
}
セレクタークラスが変更された場所
#selector(switchToDataTabCont)