我想在我的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"。
对这种功能障碍有什么看法吗?
答案 0 :(得分:1)
您只能定义一次委托方法,每次都会调用它
选项卡项目已被选中。在委托方法内部检查哪个视图
选择控制器(例如使用tabBarController.selectedIndex
),并相应地采取行动。
示例:
- (void)tabBarController:(TBControllerViewController *)tabBarController didSelectViewController:(UIViewController *)viewController {
if (tabBarController.selectedIndex == 1) {
FoodViewController *fvc = (FoodViewController *)viewController;
fvc.caloriesDepensees = tabBarController.caloriesTB;
} else {
// ...
}
}