如何使用故事板对UITabbarcontroller进行子类化?

时间:2013-01-23 22:36:33

标签: uitabbarcontroller subclass

我有一个使用故事板的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?

1 个答案:

答案 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;

希望有所帮助。