我有一个使用故事板的tabbar应用程序。标签1是一个带有Mapview&的UIViewController。标签2是UITableViewController。
appdelegate要求进行网络提取(通过自定义类)并获取该网络响应并通过自定义类进行查询,然后将信息放入CD-db(通过自定义类)。
MapVC从CD-db中获取结果并填充要循环的NSMutableArray(属性)。该数组包含一个带有2个坐标的自定义CD-db对象,用于在for循环中创建MKAnnotation。计算从每个MKAnnotation到userLocation的距离,并在其subtitle属性中使用距离值完成MyLocation Class对象。因此,地图上的每个图钉都显示标题(名称)&副标题(距离)。
TableVC创建对CD-db的单独提取并填充其数组属性以在cellForRowAtIndexPath(CFRAIP)中使用。
现在我希望tableview也显示每个单元格中的距离。所以有人建议我将uitabbarcontroller子类化,并将TableVC.tableview的委托/数据源设置为MapVC。我的问题是,如何将我的uitabbarcontroller子类化并设置委托和数据源?
类似于:在app delegate中获取窗口的rootviewcontroller?
答案 0 :(得分:1)
首先,你需要继承UITabBarController。在Xcode中创建一个新文件,将UITabBarController设置为父类。
然后转到故事板并选择tabbarcontroller,将其自定义类设置为您刚刚创建的类。
在tabVC的viewDidLoad
中获取其子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;
希望有所帮助。