Как мне подключить кнопку в UINavigationBar? - PullRequest
0 голосов
/ 19 сентября 2009

Я бросил UINavigationBar на форму XIB. Затем я бросил UIButton в форме (не на UINavigationBar). Я изменил тип на InfoLight (чтобы он выглядел как символ информации).

Затем я перетащил UIB-кнопку на UINavigationBar и установил ее в качестве правой кнопки. В результате перетаскивания он волшебным образом меняет тип с UIButton на UIButtonBarItem.

Почему я просто не перетащил UIButton на UINavigationBar для начала? Потому что, как только кнопка появится, Interface Builder по какой-либо причине не позволит вам изменить тип на InfoLight.

В соседнем файле .h я создал объявление для IBAction

- (IBAction) btnInfoClick; 

Тогда в .m файле я написал реализацию:

- (IBAction) btnInfoClick {
    // kick off the about screen
    // code follows
}

Как мне теперь подключить кнопку на панели навигации к моей функции btnInfoClick?

Или я начну с того, что неправильно?

Следует отметить, что если я просто перетащил кнопку из библиотеки прямо на панель навигации, я могу щелкнуть значок «Владелец файла», а затем перетащить btnInfoClick IBAction на кнопку. В этом случае событие click срабатывает нормально.

Однако в сценарии, когда я сначала перетаскиваю кнопку в другое место, а затем на панель навигации, событие никогда не срабатывает. Не уверен, что я делаю не так.

Ответы [ 2 ]

1 голос
/ 19 сентября 2009

Откройте IB, выберите UIBarButtonItem и в Инспекторе перейдите на вкладку Подключения.

Перетащите курсор из точки справа от селектор на AppDelegate / Владелец файла (тот, в котором определено действие) и выберите действие .

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

- (IBAction)btnInfoClick:(id)sender;

и попробуйте снова. Я знаю, что вам не обязательно указывать отправителя (по крайней мере, программно, как я всегда использую), но у меня возникла та же проблема, и после добавления параметра отправителя он работал правильно.

Удачи, и дайте мне знать, работает ли это!

0 голосов
/ 19 сентября 2009

Я думаю, это ошибка в IB. Но я нашел обходной путь здесь . Репостинг для потомков:

  1. Создать кнопку в представлении (не на панели навигации!)
  2. Установите для этой кнопки значение Info Light
  3. Установите для этой кнопки действие Touch Inside Up
  4. Переместить кнопку на панель навигации
...