2012-08-25 3 views
0

다음 코드를 처리 할 때 :아이폰 OS : 경고 didSelectViewController

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
    if (viewController == [tabBarController.viewControllers objectAtIndex:0]) { 
     MySearchViewController *controller = viewController; 
     [[controller tableView] reloadData]; 
    } 
} 

다음과 같은 경고를 수율 :

Incompatible pointer types initializing 'MySearchViewController *__strong' with an expression of type 'UIViewController *__strong' 

의 메소드를 호출하는 적절한 클래스로 MySearchViewControllerviewController 캐스팅하는 적절한 방법이 될 것입니다 무엇 ?

+0

은 단순히'MySearchViewController * 컨트롤러 = (MySearchViewController *)의 ViewController를 시도해 봤어,'? – DrummerB

+0

안녕하세요. 그게 ... Objective C에서 적절한 주조인가요? – Wells

+0

컴파일러에게 그 타입임을 알았으므로 경고를 표시하지 않습니다. 그것은 대상에게 아무 것도하지 않습니다. 따라서 viewController가 다른 유형의 클래스로 밝혀지면 충돌이 발생합니다. – DrummerB

답변

2

그냥이 변경 :

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
    if (viewController == [tabBarController.viewControllers objectAtIndex:0] && [viewController isKindOfClass:[MySearchViewController class]]) { 
     MySearchViewController *controller = (MySearchViewController *)viewController; 
     [[controller tableView] reloadData]; 
    } 
} 
+0

좋은 게임, 좋은 노력. – Wells