私は現在、アプリをTabBarアイテムの実行中に削除する方法を見つけようとしています。それを有効または無効にする方法を見つけましたが、完全に削除する方法はありませんでした。
無効にするには、次のようにします。
ViewDidLoad
if let tabBarItem = self.tabBarController?.tabBar.items?[3] as? UITabBarItem {
tabBarItem.enabled = false
}
これはうまくいきますが、それでもユーザーはTabBarアイテムを見ることができ、それを完全に削除するだけです。方法はありますか?
Parseを介してTabBarItemをトリガーしたいのですが、Parse Dataをtrueに設定すると、他の方法では表示されないはずです。
viewControllers
のtabBarController
プロパティを、不要になった特定のviewControllerを除外した配列で設定したいとします。
if let tabBarController = self.tabBarController {
let indexToRemove = 3
if indexToRemove < tabBarController.viewControllers?.count {
var viewControllers = tabBarController.viewControllers
viewControllers?.remove(at: indexToRemove)
tabBarController.viewControllers = viewControllers
}
}
1つのアイテムを無効にしたい人のために。 @Danieleのソリューションからこのコードを使用します。 UITabBarControllerクラスに配置します
viewDidLoad() {
let index = 0 //0 to 5
viewControllers?.remove(at: index)
}
Swift 5:Tab Bar Controllerで1つのインデックスのみを削除する場合(このメソッドは、viewDidLoadとviewDidAppearの両方で使用できます)
override func viewDidAppear(_ animated: Bool) {
}
override func viewDidLoad() {
super.viewDidLoad()
}
tabBarController.viewControllers?.remove(at:0) // for 0 index
tabBarController.viewControllers?.remove(at:1) // for 1 index
tabBarController.viewControllers?.remove(at:2) // for 2 index
タブバーに4つのインデックスがあり、最後の2つのインデックスを削除したい場合
tabBarController.viewControllers?.remove(at:2)
tabBarController.viewControllers?.remove(at:2)
最初の行で3番目のインデックスが削除され、4から3が残ります。2番目のインデックスを削除すると、3番目のインデックスが再び削除され、最後に2つのインデックスが残ります。
Swift 4.1追加のアイテムを削除するには、配列を使用します
let index = [2,0]
index.forEach{viewControllers?.remove(at: $0)}
配列のポイントは、目的の結果を得るために削除するインデックスの降順を使用する必要があります。