iOS: 2 кнопки вызывают один и тот же контроллер представления.Как мне найти, какой из них был нажат? - PullRequest
4 голосов
/ 02 августа 2011

Заголовок говорит о большинстве того, что я ищу:

У меня есть 2 кнопки в главном меню, которые обе вызывают один и тот же контроллер представления.В зависимости от того, какая кнопка была нажата, контроллер представления ведет себя немного по-другому.Я думал, что у меня есть исправление с использованием NSNotificationCenter, но он не будет ничего ловить в первый раз в контроллере представления (потому что он еще не был загружен).Есть ли другие способы сделать это?


РЕДАКТИРОВАТЬ: Кажется, есть некоторая путаница, возможно, с моей стороны.Проблема заключается в передаче информации через несколько контроллеров представления.Кнопки в контроллере вида главного меню вызывают второй контроллер вида, проблема заключается в том, что контроллер второго вида не знает каких-либо переменных, созданных в контроллере вида главного меню.

Ответы [ 4 ]

6 голосов
/ 02 августа 2011

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

- (IBAction) buttonPressed:(id)button
{
    //Initialize your view controller
    MyViewController* secondViewController = [[MyViewController alloc] init...];

    //Assign a value to a variable you create (I called it pushedButtonValue) so the
    //viewController knows which button was pressed
    secondViewController.pushedButtonValue = [button tag];

    //Transition to the new view controller
    [self.navigationController pushViewController:secondViewController animated:YES];
}
2 голосов
/ 02 августа 2011

Обработчик события для нажатия кнопки обычно имеет параметр (id) отправителя.Используйте это, чтобы определить, какая кнопка была нажата на основе.

- (IBAction)pushButton:(id)sender {
    UIButton *button = (UIButton *)sender;
}
1 голос
/ 02 августа 2011

установить IBOutlets для каждой кнопки, а затем проверить, какой отправитель является какой кнопкой. Но лучший способ сделать это - иметь IBActions для каждой кнопки для запуска, затем они могут вызывать метод с помощью BOOL или перечислять методику, как вести себя, или выполнять любой другой тип обработки самостоятельно и вызывать метод, который делает общий код.

0 голосов
/ 02 августа 2011

Кроме того, вы можете установить тег для каждой кнопки, предпочтительно используя typedef или enum (для ясности). В методе действия сравните значение тега. Возможно, вам придется сначала ввести тип объекта-отправителя в UIButton.

См .: Как установить тег UIButton с помощью NSString?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...