0

저는 Master 용 UINavigationController 내부에서 UITableViewController를 사용하고 있으며 Google지도를 표시하기 위해 UINavigationController 내부의 GMSMapViewDelegate를 구현하는 UIViewController를 사용하고 있습니다. 현재 테이블 뷰와 Google 맵은 UISplitViewController에 잘 표시됩니다.UISplitViewController 및 Google지도와 함께 didSelectRowAtIndexPath 사용하기

저는 Objective C에서 프로그래밍과 IOS 7에서 Big Nerd Ranch의 가이드를 읽은 초보자입니다. didSelectRowAtIndexPath 메서드를 사용하여지도에서 카메라 위치를 변경하는 방법을 알 수 없습니다. 나는 카메라 위치를 변경하는 방법을 알고, 내 응용 프로그램이 특정 행을 두 드릴 때 응답했는지 테스트하기 위해 NSLog 호출을 작성했지만 두 컨트롤러를 연결하는 방법을 알 수는 없습니다. 나는 컨트롤러를 UITableView에 대한 위임자 인 mapview를 보유하도록 만들려고 생각했지만 두 가지를 연결하는 방법에 대해서는 혼란 스럽다. 어떤 옵션을 가지고 나갈 수 있을까요?

내 appdelegate 파일의 모양입니다.

... 
mapviewController *mvc = [[mapViewController alloc]init]; 
locationTableController *ltc = [[locationTableController alloc]init]; 

UISplitViewController *svc = [[UISplitViewController alloc]init]; 
UINavigationController *sideNav = [[UINavigationController alloc]initWithRootViewController:ltc]; 
UINavigationController *mapNav = [[UINavigationController alloc]initWithRootViewController:mvc]; 
svc.delegate = mapNav; 
svc.viewControllers = @[sideNav,mapNav]; 
.... 

답변

1

내가 계속 것이다 당신의 locationTableController 테이블에 대한 위임 및 데이터 소스로. self.splitViewController을 사용하여 splitViewController에 액세스 할 수 있습니다. mapNav는 viewControllers[1]이고 mapviewcontroller는 mapNav의 rootViewController입니다. mapviewcontroller에 changeCameraPosition 메소드를 구현하는 경우 didSelectRowAtIndexPath에서 호출 할 수 있습니다. didSelectRowAtIndexPath 그렇게 :

UISplitViewController *svc = self.splitViewController; 
UINavigationController *mapNav = svc.viewControllers[1]; 
mapViewController *mvc = (mapViewController *)mapNav.rootViewController; 
[mvc changeCameraPosition]; 

이미 완료되지 않은 경우 관련 .H 파일을 가져올 필요가있다. 개인적으로 splitViewController에 다른 속성을 추가하여 다른보기 컨트롤러에 액세스하는 속도를 높이십시오.

+0

우수. 초보이기 때문에, 리시버가 분할 뷰 컨트롤러의 자식이라면 뷰 컨트롤러 계층에서 가장 가까운 조상을 반환하는 "splitViewController"속성이 있다는 것을 알지 못했습니다. 유일한 차이점은 일단 mapNav UINavigationController에 액세스하면 topViewController를 사용한다는 것입니다. – inspired

관련 문제