2015-01-20 4 views
0

나는 특정 기준에 따라 프로그래밍 방식으로 선택된 탭을 변경하기 위해 호출되는 objective-c의 코드가 완벽하게 작동합니다.Swift에서 프로그래밍 방식으로 UITabBarController 대리자 호출

-(void)loadNewView 
{ 
    UITabBarController *tabBarController = (UITabBarController *)self.window.rootViewController; 
    [tabBarController setSelectedIndex:2]; 
    [tabBarController.delegate tabBarController:tabBarController didSelectViewController:[tabBarController.viewControllers objectAtIndex:2]]; 
} 

나는 아래 스위프트의 같은 동등한를 얻으려고 노력하고 있어요 내가 "회원이라는 이름의 [AnyObject]?하지 않습니다 얻고있다 그러나 나는

func loadNewView() { 
    var tabbarController: UITabBarController = self.window?.rootViewController as UITabBarController 
    tabbarController.selectedIndex = 2 
    var svc = tabbarController.viewControllers[2] as UINavigationController 
    tabbarController.delegate?.tabBarController(tabbarController, didSelectViewController:svc) 
} 

을 시도하는 코드입니다 첨자 ". 위의 Swift 코드에 문제가 있음을 알고 있지만 오류를 이해하는 데 도움을 줄 수 있습니까?

답변

1

그래, 선택적 배열 인 [AnyObject]?에는 subscript라는 멤버가 없지만 [AnyObject]는 않습니다. 즉, 선택적 배열에서 첨자 표기법을 사용할 수 없으므로 unwrap해야합니다. 먼저 "!"를 입력하십시오.

이 시도 :

var svc = tabbarController.viewControllers![2] as UINavigationController 
+0

감사합니다. 나는 이것이 unwrap과 관련이 있다고 생각했지만 그것에 손가락을 대지 못했습니다. – iSee

관련 문제