gpt4 book ai didi

ios - 以编程方式创建 UITabBarController subview 而不加载 UITabBarItem 图像

转载 作者:行者123 更新时间:2023-11-30 12:44:31 25 4
gpt4 key购买 nike

我正在以编程方式将 Storyboard 加载到 UITabBarController 中,但由于某种原因,UITabBarItem 没有加载除第一个选项卡之外的所有图像或 selectedImage

Appearance when app first loads

但是如果您点击其他选项卡图标则会加载

After tabing through all tabs

加载 Storyboard示例

import UIKit

class ProfileViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

let defaultImag = UIImage(named: "Profile")?.withRenderingMode(.alwaysOriginal)
let selectedImag = UIImage(named: "Profile_selected")?.withRenderingMode(.alwaysOriginal)

self.tabBarItem = UITabBarItem(title: nil, image: defaultImag, selectedImage: selectedImag)
self.tabBarItem.imageInsets = UIEdgeInsets(top: 10, left: 0, bottom: -10, right: 0);
}

}

UITabBarController

import UIKit

class TabBarViewController: UITabBarController {

override func viewDidLoad() {
super.viewDidLoad()
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)


let discoverStoryboard = UIStoryboard(name: "Discover", bundle: nil)
let discoverViewController = discoverStoryboard.instantiateInitialViewController()! as UIViewController

let favouritesStoryboard = UIStoryboard(name: "Favourites", bundle: nil)
let favouritesViewController = favouritesStoryboard.instantiateInitialViewController()! as! FavouritesViewController

let profileStoryboard = UIStoryboard(name: "Profile", bundle: nil)
let profileViewController = profileStoryboard.instantiateInitialViewController()! as UIViewController

self.viewControllers = [discoverViewController, favouritesViewController, profileViewController]

}
}

最佳答案

private func createTabForStoryBoard(storyBoardName: String, title: String, imageName :String, tag: Int) -> (UINavigationController) {

let storyboard = UIStoryboard(name: storyBoardName as String, bundle: nil)
let viewController = storyboard.instantiateInitialViewController() as! UIViewController

let image = UIImage(named: imageName)
let tabBarItem:UITabBarItem = UITabBarItem.init(title: NSLocalizedString(title, comment: "Tab Bar Names") , image: image, tag: 0)

viewController.tabBarItem = tabBarItem
return viewController

}


// MARK: Custom Methods

func setTabBarViewControllers() {
let discoverViewController = self.createTabForStoryBoard("Discover", title: "Discover", imageName: "<image-name>", tag: 1)

let favouritesViewController = self.createTabForStoryBoard("Favourites", title: "Favourites", imageName: "<image-name>", tag: 2)

let profileViewController = self.createTabForStoryBoard("Profile", title: "Profile", imageName: "<image-name>", tag: 3)

let tabBarViewControllers = [discoverViewController, favouritesViewController, profileViewController]
self.viewControllers = tabBarViewControllers
}

关于ios - 以编程方式创建 UITabBarController subview 而不加载 UITabBarItem 图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41804932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com