Действие не вызывается при нажатии UIBarButtonItem - PullRequest
2 голосов
/ 20 июня 2011

Примечание: я проверял это только на симуляторе.

Я хочу добавить целевое действие в код, а не подключать его как IBAction в Интерфейсном Разработчике.

theButton находится на панели навигации вверху слева, созданной в IB.

Шаги:

  1. Объявлен theButton как IBOutlet и подключен в IB.

  2. Добавил это в viewDidLoad:

    self.theButton.target = self;
    self.theButton.action = @selector(theAction);
    
  3. Я проверяю theAction этим:

    - (void)theAction {
    NSLog(@"theAction called");
    //do some other stuff
    }
    

Когда я нажимаю theButton в симуляторе, ничего не происходит.Я вообще не вижу оператора NSLog.

Что мне не хватает?

Ответы [ 3 ]

4 голосов
/ 20 июня 2011

Подключили ли вы действие к кнопке в конструкторе интерфейсов?

Если нет, вы должны объявить действие в своем файле .h

-(IBAction)theAction;

Изменить имя действия наВаш файл .m

-(IBAction)theAction{

}

И точно подключите действие к кнопке в конструкторе интерфейсов.

3 голосов
/ 20 июня 2011

Измените свою функцию, как показано ниже:

-(IBAction)theAction{
    NSLog(@"theAction called");
    //do some other stuff
}

И если вы назвали как "@selector (theAction :);" затем измените функцию, как показано ниже:

-(IBAction)theAction:(id)sender{
    NSLog(@"theAction called");
    //do some other stuff
}

Надеюсь, это будет полезно для вас.

Дайте мне знать, если возникнут какие-либо трудности.

0 голосов
/ 21 июня 2011

Разобрался. Пришлось делать с моей конфигурацией. Я использую контроллер панели вкладок, который использует один и тот же контроллер представления для нескольких вкладок. Каждый контроллер представления отображает различные отфильтрованные данные для некоторых элементов вкладки.

Следовательно, в такой конфигурации вы должны обязательно подключить IBOutlets для каждого контроллера представления, содержащегося в элементе панели вкладок. Я только подключил один, поэтому он не работал для некоторых элементов вкладки.

...