2009-08-30 5 views
0

TabBarController에 첨부 된 UITableViewController에 메시지를 보내고 싶습니다. 그리고 naviagation bar가 있습니다. 그러나 메시지를 보내려면 어떻게해야할지 모르겠습니다. 코드가 내가 가까이있어 나에게 말한다 "인식 할 수없는 선택기 인스턴스에 전송 ..."와 다음 줄에 실패하기 전에-tabBarController를 사용하여보기 컨트롤러에 메시지 보내기 : didSelectViewController?

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
    NSLog(@"Selected tabbar"); 
    [viewController sendMessage]; 
} 

NSLog 잘 떨어져 화재,하지만 : 현재 (테스트 목적으로), 내가 가진 나는 잘못된 메시지에 -sendMessage를 보냈습니다. -sendMessage를 UITableViewController 인스턴스에 보내려는 대상은 무엇입니까?

답변

0

viewController에는 viewControllers라는 배열이 있습니다. 내 경우에는 배열에 하나의 객체 만 있습니다. 그것은 단지 추측이지만, objectAtIndex : 0이 최상위 뷰 컨트롤러라고 생각합니다. 여기

내가 찾던 코드입니다 :

activeViewController = [[viewController viewControllers] objectAtIndex:0]; 

그것은 약간 주제를 벗어하지만 멀리 탭에서 탐색 할 때 있도록 제어의 수준, 당신은 마지막 활성 뷰 컨트롤러를 저장할 수 있습니다 원하는 메시지를 보낼 수 있습니다. 그것이 활성 상태를 유지해야하는지 물어보십시오.

+0

음 ... 아마도 이것이 잘못된 것 같습니다. 선택된 'UIViewController'객체는 포인터 'viewController'가 가리키는 객체입니다. 여기에 관련된 배열은 없습니다. 문제는 '@selector (sendMessage)'에 응답하지 않는 개체가 가리키는 것입니다. – fogelbaby

1

UITableViewController 인스턴스에 -sendMessage이라는 메서드가 있다고 가정합니다. 이것은 모든 선택에 대해 호출된다는 것을 기억하십시오. 모두 에 대한보기 컨트롤러의이 응답합니까? 모든 경우에 이것을 보내고 싶어한다는 것은 놀라운 일입니다.

NSLog(@"Selected viewController: %@", viewController); 

이 그럼 당신은 당신이 얘기 객체 알 수 있습니다 : 당신이 뭔가를 추가하여 무슨 일이 일어나고 있는지에 대해 많은 것을 배울 수

if (viewController == self.tableViewController) 

: 아마도 당신은 같은 라인을 포함하는 의미 (적어도 어떤 클래스).

+0

그 점을 한 번 확인해 보았습니다.하지만 그 중 하나에서 벗어날 수있는 것은 입니다. 내 UITableViewController 메시지를 보내는 데 사용하는 방법을 잘 모르겠습니다. 어떤 제안? – JoBu1324

+0

UITableView는 UINavigationController 내부에 중첩 된 것처럼 보입니다. UINavigationController는 실제로 탭 표시 줄 컨트롤러에 의해 선택되는보기입니다. 왜 당신의 UITableViewController 구현 - viewDidAppear 당신이 나타나면 수행하려는 것들이 있다면? –

+0

왜냐하면 정말 쉽지 않기 때문입니다.) 심각한 문제의 첫 번째 단계 였지만 큰 문제는보기가 닫힐 때가 아니라 다른 탭이 선택되었을 때보기 컨트롤러에 알리는 것이 었습니다. – JoBu1324