2017-12-24 16 views
0

私はUITabBarで、選択したタブと選択していないタブに対して異なるアイコンを必要とするSwift 4を使用しています。Tabbarで作業するSwift

ただし、UITabBartintColorのみ変更されています。選択したタブと選択していないタブに異なる画像を設定することはできません。

選択したタブと選択していないタブに異なるアイコンを設定することができれば教えてください。

これは私がしようとしているものです:

let item1 = self.storyboard?.instantiateViewController(withIdentifier: "DashboardViewController") 
let icon1 = UITabBarItem(title: "", image: UIImage(named: "first_unselected"), selectedImage: UIImage(named: "first_selected")) 
item1?.tabBarItem = icon1 

答えて

1

問題は、あなたがUITabBarItemを作成する方法の方法ではありません - 私はそれをテストしてみた、それが動作します。だから私は、あなたがそれを設定どこに問題があると思います:

let item1 = self.storyboard?.instantiateViewController(withIdentifier: "DashboardViewController") 

あなたはこのコード行が画面上に提示された1つはありませんDashboardViewControllerNEWインスタンスを作成することを認識する必要があります。だから後であなたがitem1を提示しない限り、もちろんこれらのコード行は画面に影響を与えません。

画面に表示されるインスタンス(ストーリーボードによって自動的にロードされるインスタンス)を構成します。私は最良で最も簡単な方法は、DashboardViewControllerのイニシャライザにコンフィギュレーションコードを追加することです - このようにしてDashboardViewControllerのインスタンスが正しく動作するので、画面にも表示されます。

は、一例として、次のコードを取る:

import UIKit 

class DashboardViewController: UIViewController { 

    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) { 
     super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil) 

     initialize() 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 

     initialize() 
    } 

    func initialize() { 
     let icon1 = UITabBarItem(title: "", image: #imageLiteral(resourceName: "first_unselected"), selectedImage: #imageLiteral(resourceName: "first_selected")) 
     self.tabBarItem = icon1 
    } 
} 
+0

解決していただきありがとうございます。私はxibを使用していません。私はストーリーボードを使用しています。 –

+0

@PradumnaPatilまあ、試してみてください!単にtabBarItemを設定する場所を変更するように指示するので、テストするのはとても簡単です。 –

0

は、ドキュメントによると、あなたはUITabBarItemでselectedImageプロパティを使用する必要があります。デフォルトで

let tabBarButton = UITabBarItem(title: "", image: 
    UIImage(named:"image")) 
    tabBarButton.selectedImage: UIImage(named: "selected_image") 

、実際の非選択および選択された画像が自動的に>ソース画像内のアルファ値から作成されます。システム>着色を防ぐため、alwaysOriginalで画像を提供してください。

+0

情報をいただきありがとうございます。回答を更新しました。 – MohammadN

関連する問題