0

我正在为我的 Master 使用 UINavigationController 内的 UITableViewController,我正在使用 UIViewController 在 UINavigationController 内实现 GMSMapViewDelegate 以显示谷歌地图。目前表格视图和谷歌地图显示在 UISplitViewController 中。

我是一个初学者,最近读完了 Objective C 中的编程和 Big Nerd Ranch 的 IOS 7 指南。我不知道如何使用 didSelectRowAtIndexPath 方法通过地图更改相机位置。我知道如何更改相机位置,我已经编写了 NSLog 调用来测试我的应用程序在点击特定行时是否响应,但我不知道如何连接两个控制器。我曾想过尝试让持有地图视图的控制器成为 UITableView 的代表,但我对如何连接两者感到困惑。我有什么选择可以携带这样的东西。

这就是我的 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];
....
4

1 回答 1

1

我会保留您locationTableController作为表格的代表和数据源。您可以使用self.splitViewController来访问splitViewController,然后您的mapNav 位于viewControllers[1]并且您的mapviewcontroller 属于rootViewControllermapNav。如果你changeCameraPosition在你的 mapviewcontroller 中实现了一个方法,你可以在didSelectRowAtIndexPath. 所以在didSelectRowAtIndexPath

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

如果尚未完成,您可能需要导入相关的 .h 文件。就我个人而言,我会向 splitViewController 添加一些属性以加快访问其他视图控制器的速度。

于 2014-09-19T21:40:48.193 回答