0

我想在我的 appDelegate.m 中使用方法 didSelectViewController 和两个 v​​iewControllers(由 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”。

对这种功能有任何想法吗?

4

1 回答 1

1

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

- (void)tabBarController:(TBControllerViewController *)tabBarController didSelectViewController:(UIViewController *)viewController {
    if (tabBarController.selectedIndex == 1) {
        FoodViewController *fvc = (FoodViewController *)viewController;
        fvc.caloriesDepensees = tabBarController.caloriesTB;
    } else {
       // ...
    }
}
于 2013-08-06T20:41:00.853 回答