1
我有一個UITabBarController。使用界面生成器我添加了多個視圖控制器。這些viewController都是同一個類,但唯一改變的是一個參數。從UITabBarController初始化viewControllers
我想擴展UITabBarController,以便在視圖控制器初始化時添加此參數,但我不知道如何在UITabBarController擴展中執行此操作。哪裏是正確的地方做到這一點?
我有一個UITabBarController。使用界面生成器我添加了多個視圖控制器。這些viewController都是同一個類,但唯一改變的是一個參數。從UITabBarController初始化viewControllers
我想擴展UITabBarController,以便在視圖控制器初始化時添加此參數,但我不知道如何在UITabBarController擴展中執行此操作。哪裏是正確的地方做到這一點?
我也面臨的問題一樣,在這我想顯示了在標籤欄控制器的第五個標籤視圖控制器的流行, 我用這個:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
if(viewController == tabBarController.viewControllers?[4]){
let storyboard : UIStoryboard = UIStoryboard(name: "AfterLogin", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "MorePopUpVC")
vc.modalPresentationStyle = .popover
let popover = vc.popoverPresentationController
popover?.delegate = self
popover?.permittedArrowDirections = .down
popover?.sourceView = self.tabBar
popover?.sourceRect = ((self.orderedTabBarItemViews()).last?.frame)!
vc.preferredContentSize = CGSize(width: 120, height: 132)
present(vc, animated: true, completion:nil)
return false
}
return true
}
這是我如何改變第五個標籤的作用,
你可以用它喜歡:
func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
let storyboard : UIStoryboard = UIStoryboard(name: "YOUR STORYBOARD NAME", bundle: nil)
let vc = storyboard.instantiateViewController(withIdentifier: "YOUR VIEW CONTROLLER IDENTIFIER")
if(viewController == tabBarController.viewControllers?[4]){
vc.type = "PARAMETER YOU WANT"
}
present(vc, animated: true, completion:nil)
return false
}
我認爲它幫助。
目前,您的控制器由'Interface Builder'初始化。如果您想自己初始化控制器並添加一些參數,最好從代碼中添加控制器,而不是從界面構建器中添加。 –
這是有道理的,但必須有一種方法來添加參數...我想抓住視圖控制器在視圖中做了負載的TabBar控制器,並添加參數...但我覺得這是骯髒的! –
看看'UITabbarController'的代表,有一個函數[didSelectViewController](https://developer.apple.com/documentation/uikit/uitabbarcontrollerdelegate/1621173-tabbarcontroller?language=objc),你可以使用它來根據索引設置參數。但每次選擇要顯示的選項卡索引時都會設置它。 –