>

UITabBarController에서 프로그래밍 방식으로 탭을 선택한 다음로드 된 뷰에 액세스하여 기본적으로로드 된 세그먼트를 설정하고 싶습니다.

예를 들어 메뉴가 있고 제목이 'A/B'인 버튼을 클릭하면 'A'탭을 선택한 다음 'B'세그먼트를 선택합니다. 'A/C'라는 제목의 버튼을 클릭하면 'A'탭과 'C'세그먼트를 선택하고 싶습니다.

문제의 첫 부분은 다음과 같이 알아 냈습니다.

class TabBarController: UITabBarController {
        ...
        func selectTab(name: String) {
            for tab in self.viewControllers! {
                if(name == tab.tabBarItem.title) {
                    self.selectedViewController = tab
                    return
                }
            }
        }
}

자동으로 열리는보기를 얻는 방법을 잘 모르겠습니다. 가장 좋은 방법은 무엇입니까?

미리 감사합니다!

  • 답변 # 1

    결국 self.selectedViewController 에서 내비게이션 컨트롤러를 얻을 수 있다는 것을 깨달았습니다.  그런 다음 topViewController 를 사용하여 뷰 컨트롤러 .

    예를 들어, NavigationController 라는 내비게이션 컨트롤러가있는 경우   GroupsViewController 라는 뷰 컨트롤러 , 다음을 수행 할 수 있습니다.

    func selectTab(name: String, contentType: ContentType? = nil) {
        for tab in self.viewControllers! {
            if(name == tab.tabBarItem.title) {
                self.selectedViewController = tab
                if let nc = self.selectedViewController as? NavigationController{
                    if let vc = nc.topViewController {
                        if let gvc = vc as? GroupsViewController {
                             gvc.activeContentType = contentType
                        }
                    }
                }
                return
            }
        }
    }
    
    

    ViewDidAppear 에서 사용할 변수 (ContentType 유형)를 설정해야합니다.  원래 계획했던대로 세그먼트 컨트롤에 액세스하는 대신 (탭이있을 수 있지만 뷰 컨트롤러가 아직로드되지 않았을 수 있음)

  • 이전 javascript - 두 개의 키보드 키가 동시에 다운되는 것을 감지
  • 다음 javascript - typeerror - 정의되지 않은 '푸시'속성을 읽을 수 없습니다 데이터 배열에 주석을 넣을 수 없습니다