1

我有一个使用情节提要的标签栏应用程序。Tab 1 是带有 Mapview 的 UIViewController,Tab 2 是 UITableViewController。

appdelegate 调用网络获取(通过自定义类)并获取该网络响应并解析它(通过自定义类),然后将信息放入 CD-db(通过自定义类)。

MapVC 从 CD-db 获取结果并填充 NSMutableArray(属性)以循环通过。该数组包含一个带有 2 个坐标的自定义 CD-db 对象,用于在 for 循环中创建 MKAnnotation。计算每个 MKAnnotation 到 userLocation 的距离,并在其 subtitle 属性中使用距离值完成 MyLocation 类对象。因此地图上的每个图钉都显示一个标题(名称)和副标题(距离)。

TableVC 创建对 CD-db 的单独提取并填充其数组属性以在 cellForRowAtIndexPath (CFRAIP) 中使用。

现在我希望表格视图也显示每个单元格中的距离。所以有人建议我继承 uitabbarcontroller 并将 TableVC.tableview 的委托/数据源设置为 MapVC。我的问题是,如何子类化我的 uitabbarcontroller 并设置委托和数据源?

类似于:在应用程序委托中获取窗口的 rootviewcontroller?

4

1 回答 1

1

首先你需要继承UITabBarController。在 Xcode 中新建一个文件,将 UITabBarController 设置为父类。

然后转到您的故事板并选择 tabbarcontroller,将其自定义类设置为您刚刚创建的类。

viewDidLoadtabVC 中获取它的子 VC 并找到你想要的。这是伪代码,我以后可以整理一下:

CSMapListViewController *mapListViewController;
CSTableViewController *tableViewController;

for (UIViewController *vc in self.viewControllers)
{
    if ([vc isKindOfClass:[CSMapListViewController class]])
    {
        mapListViewController = (CSMapListViewController *)vc;
    } else if ([vc isKindOfClass:[CSTableViewController class]])
    {
        tableViewController = (CSTableViewController *)vc;
    } 
}

tableViewController.tableview.datasource = mapListViewController;

希望有帮助。

于 2013-01-24T00:15:54.207 回答