如何从UIViewController扩展的任何类以编程方式创建选项卡:
class DashboardTabBarController: UITabBarController { override func viewDidLoad() { //here } ... }
vi4fp9gy1#
更新SWIFT 5
如何以编程方式创建UITabBarController的一个示例如下所示:首先,我们创建UIViewControllers,它将成为选项卡栏界面的每个选项卡的内容。对于这个例子,我们只创建一个非常简单的。
UITabBarController
UIViewControllers
class Item1ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() view.backgroundColor = UIColor.green self.title = "item1" print("item 1 loaded") } }
UITabBarController:我们创建UIViewControllers的新示例,并希望在标签栏中显示。然后为每个示例创建一个图标,然后创建一个数组,其中包含所有指定标签栏界面每个标签内容的UIViewControllers。数组中视图控制器的顺序与标签栏中的显示顺序相对应。
class DashboardTabBarController: UITabBarController, UITabBarControllerDelegate { override func viewDidLoad() { super.viewDidLoad() delegate = self } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) let item1 = Item1ViewController() let icon1 = UITabBarItem(title: "Title", image: UIImage(named: "someImage.png"), selectedImage: UIImage(named: "otherImage.png")) item1.tabBarItem = icon1 let controllers = [item1] //array of the root view controllers displayed by the tab bar interface self.viewControllers = controllers } //Delegate methods func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool { print("Should select viewController: \(viewController.title ?? "") ?") return true; } }
um6iljoc2#
如果你在视图控制器中使用故事板,那么你必须在tabbarcontroller类中这样写。
class CustomTabbarController : UITabBarController { override func viewDidLoad() { super.viewDidLoad() let storyboard = UIStoryboard(name: "Main", bundle: nil) let firstViewController = FirstViewController() let navigationController = UINavigationController(rootViewController: firstViewController) navigationController.title = "First" navigationController.tabBarItem.image = UIImage.init(named: "map-icon-1") viewControllers = [navigationController] if let secondViewController = storyboard.instantiateViewController(withIdentifier: "SecondViewController") as? SecondViewController { let navgitaionController1 = UINavigationController(rootViewController: secondViewController) navgitaionController1.title = "Second" navgitaionController1.tabBarItem.image = UIImage.init(named: "second-icon-1") var array = self.viewControllers array?.append(navgitaionController1) self.viewControllers = array } } }
8ulbf1ek3#
private lazy var tabbarViewController: UITabBarController = { let tabbarViewController = UITabBarController() tabbarViewController.setViewControllers([startVC, offerVC, benefitsVC, shopVC, recipesVC], animated: true) return tabbarViewController }() window?.rootViewController = tabbarViewController
3条答案
按热度按时间vi4fp9gy1#
更新SWIFT 5
如何以编程方式创建
UITabBarController
的一个示例如下所示:首先,我们创建
UIViewControllers
,它将成为选项卡栏界面的每个选项卡的内容。对于这个例子,我们只创建一个非常简单的。UITabBarController
:我们创建
UIViewControllers
的新示例,并希望在标签栏中显示。然后为每个示例创建一个图标,然后创建一个数组,其中包含所有指定标签栏界面每个标签内容的UIViewControllers
。数组中视图控制器的顺序与标签栏中的显示顺序相对应。um6iljoc2#
如果你在视图控制器中使用故事板,那么你必须在tabbarcontroller类中这样写。
8ulbf1ek3#