ストーリーボードに5つのタブバーアイテムを含むタブバーコントローラーを作成しました。タブバースタックの「viewcontrollers」配列からプログラムで1つのViewControllerを削除したいと思います。また、上記のView Controllerを削除したときに、選択した他のタブ項目をアプリに表示したいと思います。以下のコードで試しましたが、機能しません。
if let tabBarController = self.storyboard?.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController {
tabBarController.viewControllers?.remove(at: 2)
tabBarController.selectedIndex = 1
}
viewControllers
不要なプロパティなしでプロパティを再割り当てします。
if let tabBarController = self.storyboard?.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController {
tabBarController.selectedIndex = 1
var controllers = tabBarController.viewControllers
controllers.remove(at: 2)
tabBarController.viewControllers = controllers
}
これでこのコードは問題ありませんが、問題は次の行です。
let tabBarController = self.storyboard?.instantiateViewController(withIdentifier: "tabbar") as? UITabBarController
これにより、新しいUITabBarController
インスタンスが作成されますが、ストーリーボードによってインスタンス化され、画面に表示されているインスタンスにアクセスする必要があります。ただし、コンテキストがないと、アクセス方法について提案するのは困難です。タブバーコントローラーに直接埋め込まれたviewControllerからこのコードを呼び出すことを考えると、私はこれから始めます。
if let tabBarController = self.tabBarController {
tabBarController.selectedIndex = 1
var controllers = tabBarController.viewControllers
controllers.remove(at: 2)
tabBarController.viewControllers = controllers
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加