如何使用带有两个不同控制器的didSelectViewController?

时间:2013-08-06 20:31:51

标签: ios methods duplicates appdelegate

我想在我的appDelegate.m中使用方法didSelectViewController和两个viewControllers(由TabBarController链接)。

当我复制第一种方法(单独工作)并将其粘贴在下面时。我更改了viewController的名称,但错误消息"重复声明方法"但是出现了。

有任何解决此问题的想法吗?

我有什么:

- (void)tabBarController:(TBControllerViewController *)tabBarController didSelectViewController:(FoodViewController *)viewController {
    viewController.caloriesDepensees = tabBarController.caloriesTB;
}

我希望没有错误:

- (void)tabBarController:(TBControllerViewController *)tabBarController didSelectViewController:(FoodViewController *)viewController {
    viewController.caloriesDepensees = tabBarController.caloriesTB;
}

- (void)tabBarController:(TBControllerViewController *)tabBarController didSelectViewController:(DrinksViewController *)viewController {
    viewController.caloriesDepenseesDrinks = tabBarController.caloriesTB;
}

编辑: Martin R,我听从了你的建议,这是我的代码:

- (void)tabBarController:(TBControllerViewController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    if(tabBarController.selectedIndex == 0) {
        DrinksViewController *dvc = (DrinksViewController *)viewController;
        dvc.caloriesImportesD = tabBarController.caloriesTB;
    } else if (tabBarController.selectedIndex == 1) {
        FoodViewController *fvc = (FoodViewController *)viewController;
        fvc.caloriesDepensees = tabBarController.caloriesTB;
    }
}

但只有我的"(tabBarController.selectedIndex == 1)"命令有效。 我用这种方法检查了viewController的索引,所以我确定DrinksViewController的索引是0:

index = [self.tabBarController.viewControllers indexOfObject:self];
    NSLog (@"%d",index);

我以相同的方式定义了" caloriesImportesD"和" caloriesDepensees"。

对这种功能障碍有什么看法吗?

1 个答案:

答案 0 :(得分:1)

您只能定义一次委托方法,每次都会调用它 选项卡项目已被选中。在委托方法内部检查哪个视图 选择控制器(例如使用tabBarController.selectedIndex),并相应地采取行动。 示例:

- (void)tabBarController:(TBControllerViewController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    if (tabBarController.selectedIndex == 1) {
        FoodViewController *fvc = (FoodViewController *)viewController;
        fvc.caloriesDepensees = tabBarController.caloriesTB;
    } else {
       // ...
    }
}