2017-01-23 1 views
0

は、プログラムUITabBarControllerサブビューがUITabBarItemの画像を読み込まない作成

Appearance when app first loads

をロードしていない私はprogramicaly UITabBarControllerに絵コンテロードしていますが、何らかの理由でUITabBarItemは、最初のタブ以外のすべてのための画像やselectedImageをロードしていませんストーリーボードの例をロードしかし、あなたは他のタブアイコンの負荷をタップすると

After tabing through all tabs

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] 

    } 
} 
+0

画像がロードされていませんか? –

+0

スクリーンショットを追加しました –

答えて

0
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 
    } 
+0

UITabBarItemの初期化をカスタムUITabBarControllerに移しましたが、UIViewControllerがUITabBarItemで初期化されていて、タブがロードされていないときにその値を読み込む必要があるのはなぜですか? –

関連する問題