微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SWIFT:如果我以编程方式实现UITAB栏,是否可以在storyBoard中编辑不同的tabItem

如何解决SWIFT:如果我以编程方式实现UITAB栏,是否可以在storyBoard中编辑不同的tabItem

我已经以编程方式实现了tabBar:

class ViewController: UIViewController {
     let tabBarCnt = UITabBarController()
    override func viewDidLoad() {
        super.viewDidLoad()
         tabBarCnt.tabBar.tintColor = UIColor.black
         createTabBarController()
    }
    func createTabBarController() {
        let firstVc = UIViewController()
        let downloadViewController = DownloadsViewController()
        downloadViewController.tabBarItem = UITabBarItem(tabBarSystemItem: .downloads,tag: 0)
        let bookmarkViewController = BookmarksViewController()
        bookmarkViewController.tabBarItem = UITabBarItem(tabBarSystemItem: .bookmarks,tag: 1)
        let favoritesViewControllers = FavoritesViewController()
        favoritesViewControllers.tabBarItem = UITabBarItem(tabBarSystemItem: .favorites,tag: 2)
       
        // Adding navigationControllers
        let controllerArray = [downloadViewController,bookmarkViewController,favoritesViewControllers]
        // For somereason this made the word Home appear in first tab
        tabBarCnt.viewControllers = controllerArray.map{ UINavigationController.init(rootViewController: $0)}
        self.view.addSubview(tabBarCnt.view)
    }
}

DownloadViewController.swift

class DownloadsViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.green
        self.title = "Downloads"
    }
}

这是结果:

enter image description here

我的问题是: 是否必须以编程方式实现不同viewControllers downloadViewController,favoritesViewControllers的所有布局?
我不能使用情节提要板并关联viewController并在那里进行所有UI设计和实现,例如:

enter image description here

enter image description here

这里的问题是,如果我将以编程方式实现所有布局,那将不是显而易见的事情,也不是实际的事情。

并向该故事板ViewController分配DownloadsViewController时,当我导航到UITabBar中的DownloadsTab时,它不会显示出来。

解决方法

是的,您当前可以通过编程方式来创建视图控制器实例,而不必像这样从StoryBoard加载/获取viewController实例。

UIStoryboard(name: "Main",bundle: Bundle.main).instantiateViewController(identifier: "downloadsVC") as! DownloadsViewController

在调用此方法之前,请先设置viewController StoryboardID enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。