2017-12-24 11 views
0

나는 선택되고 선택되지 않은 탭에 대해 다른 아이콘을 원할 때 스위프트 4를 사용하여 UITabBar을 작업 중입니다.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") 

것은 당신이 코드 줄이 화면에 표시되는 하나되지 않은는 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