2013-08-06 1 views
0

Я хочу использовать метод didSelectViewController в моем appDelegate.m с двумя viewControllers (связанный с TabBarController).Как использовать didSelectViewController с двумя разными контроллерами?

Когда я копирую первый метод (который работает отлично в одиночку) и вставляйте его чуть ниже. Однако я изменяю имя viewController, но появляется сообщение об ошибке «duplicate declaration of method».

Любые идеи для решения этой проблемы?

Что у меня есть:

- (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; 
} 

EDIT: 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; 
    } 
} 

Но только мой "(tabBarControlle r.selectedIndex == 1) ". я проверил индекс ViewController с этим методом, поэтому я уверен, что индекс DrinksViewController является 0:

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

я определил таким же образом «caloriesImportesD» и «caloriesDepensees».

Любая идея для этой дисфункции?

+0

Так что 'tabBarController.selectedIndex' внутри' метода didSelectViewController'? - Альтернативой может быть использование 'isKindOf' для проверки класса передаваемого контроллера представления. –

+0

SelectIndex равен 0. Фактически, didSelectViewController работает только с нажатием на вкладке и поэтому он не работает для первого появления на вкладке. Однако то, что я показываю в своем представлении, контролирует только «чтение» в первый раз. Вот почему я не могу использовать «caloriesImportesD». Любая идея передать это значение DrinksViewController перед первым появлением TabBarController? – GoldXApp

+0

Тогда я не понимаю, почему 'if (tabBarController.selectedIndex == 0)' не работает. Вы вводили '=' вместо '=='? –

ответ

1

Вы можете определить метод делегата только один раз, он будет вызываться каждый раз, когда был выбран один из элементов табуляции. Внутри метода делегата проверить, какой контроллер был выбран (например, с использованием tabBarController.selectedIndex) и действовать соответствующим образом. Пример:

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