2016-07-29 4 views
1

UITabBarController을 확장하는 클래스를 사용하고 있습니다. 탭을 전환하려면 내 클래스의 self.tabBarController.selectedIndex 속성을 설정해야합니다.프로그래밍 방식으로 뷰 컨트롤러의 인스턴스를 얻으십시오

내가 다른 클래스에서이 변수를 변경하는 메소드를 호출 /이 변수를 설정하려는 때문에 내가 지금까지이 두 게시물 그러나 그들은 살펴 보았다 TabsController

라고 내 사용자 정의 클래스의 인스턴스가 있어야합니다 스토리 보드를 사용하여 프로그래밍 방식 거의 모든 일을하고 포함, 가리키고이 내 전체 스토리 보드입니다 :

enter image description here

어떻게 프로그래밍 방식으로이 문제를 해결합니까?

Get Instance Of ViewController From AppDelegate In Swift

Access the instance of a Viewcontroller from another in swift

답변

2

UITabBarController의 응용 프로그램 'rootViewController으로 most often used이다 시도 할 수 있습니다. 스토리 보드를 사용하지 않는 동안 앱의 윈도우의 rootViewControllerTabsController의 인스턴스를 설정하는 경우, 앱 시작 후, 당신은과 같이 앱에서 어디에서이 인스턴스를 참조 할 수 있습니다 :

if let tabsController = UIApplication.sharedApplication().delegate?.window??.rootViewController as? TabsController { 
    tabsController.selectedIndex = 2 
} 
+0

감사합니다! 이 코드는 작동합니다. 빠른 질문입니다. 'TabsController' 인스턴스를'rootViewController'로 설정하면 코드를 사용하여 해당 인스턴스를 참조 할 수 있습니다. 그러나, 나는이 코드를 시도해 보았고 작동했다. 나는 'rootViewController'를 설정하는 코드를 입력하지 않았다. 내가 걱정해야 할 것이 있나요? – Roymunson

+0

@Roymunson 질문에있는 스토리 보드는 아마도 윈도우의 루트보기 컨트롤러를 'TabsController'로 설정했을 것입니다. 해당 스토리 보드가 응용 프로그램의 시작점으로 설정된 [대상의 일반 설정] 탭 (http://imgur.com/gallery/YqxcI)을보고이를 확인할 수 있습니다. 스토리 보드에서'TabsController'는 [초기 뷰 컨트롤러로 설정] (http://imgur.com/I14mM7Z)되어 루트 뷰 컨트롤러로 설정됩니다. – gravicle

0

let controller = self.tabBarController.viewControllers[self.tabBarController.selectedIndex] 
관련 문제