【问题标题】:Using didSelectRowAtIndexPath with UISplitViewController and Google Maps将 didSelectRowAtIndexPath 与 UISplitViewController 和 Google 地图一起使用
【发布时间】:2014-11-14 13:09:16
【问题描述】:

我正在为我的 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];
....

【问题讨论】:

    标签: ios uitableview uinavigationcontroller uisplitviewcontroller gmsmapview


    【解决方案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 添加一些属性以加快访问其他视图控制器的速度。

    【讨论】:

    • 优秀。作为一个初学者,我不知道如果接收者是拆分视图控制器的子节点,那么有一个属性“splitViewController”会返回视图控制器层次结构中最近的祖先。唯一的区别是我在访问 mapNav UINavigationController 后使用了 topViewController。
    猜你喜欢
    • 2018-08-31
    • 1970-01-01
    • 2015-05-10
    • 2011-01-28
    • 1970-01-01
    • 2022-06-16
    • 2011-10-12
    • 2015-07-04
    • 1970-01-01
    相关资源
    最近更新 更多