2017-11-12 4 views
0

UITabBar가 아닌 UITabBar를 사용하고 있습니다. 사용자가 탭을 클릭 할 때마다 밑줄이 그어진 이미지를 볼 수 있습니다.프로그래밍 방식으로 tabbar 항목을 선택하고 표시기 이미지를 표시합니다.

public override func viewDidLoad() { 
    super.viewDidLoad() 
    UITabBar.appearance().selectionIndicatorImage = getImageWithColorPosition(color: UIColor.darkGray, size: CGSize(width:presenterView.frame.size.width/2, height:49), lineSize: CGSize(width:presenterView.frame.size.width/2, height:2)) 
} 

// getImageWithColorPosition는 탭 중 어느 한 사용자가 클릭 만 표시되는 화상을 강조 할 때, 그러나

func getImageWithColorPosition(color: UIColor, size: CGSize, lineSize: CGSize) -> UIImage { 
    let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height) 
    let rectLine = CGRect(x: 0, y: size.height-lineSize.height, width: lineSize.width, height: lineSize.height) 
    UIGraphicsBeginImageContextWithOptions(size, false, 0) 
    UIColor.clear.setFill() 
    UIRectFill(rect) 
    color.setFill() 
    UIRectFill(rectLine) 
    let image = UIGraphicsGetImageFromCurrentImageContext()! 
    UIGraphicsEndImageContext() 
    return image 
} 

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

public func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { 
    if (item.tag == 0) { 
     openItem1() 
    } else { 
     openItem2() 
    } 
} 

UITabBarItem

아래 밑줄 이미지를 추가하기위한 것이다. 사용자가 화면에 처음 도착할 때 기본 탭을 선택하고 싶습니다. 프로그래밍 방식으로 수행 할 때 밑줄 이미지가 표시되지 않습니다. UITabBar의 선택을 프로그래밍 방식으로 트리거 할 수 없다는 스택 오버플로 게시물을 읽었습니다.

다른 방법이 있습니까?

답변

0

질문을 올바르게 이해하면 사용자가 앱을 열 때 프로그래밍 방식으로 UITabBar에서 탭을 선택하려고합니다. 당신은 AppDelegate 안에서 이것을 할 수 있습니다. 예를 들어 didFinishLaunchingWithOptions

내 프로젝트에서는 특정 알림 같은 이벤트에 따라 탭바 컨트롤러의 탭으로 이동합니다.

if let tabbarController = self.window?.rootViewController as? UITabBarController { 
    tabbarController.selectedIndex = 0 
} 

당이 경우 응용 프로그램은, 감기 시작과 마지막으로 연 탭에서 실행 된 경우 인덱스 0과 하나가 될 것입니다 선택한 항목을 기본값 : AppDelegate 내부 프로그래밍 방식 탭을 선택하려면 다음 코드를 사용 앱이 이전에 출시되어 앱 전환기에 보관되었습니다.

희망이 당신이 찾고있는 것입니다.

관련 문제