Как связать элемент панели вкладок с действием? - PullRequest
6 голосов
/ 31 июля 2011

У меня есть UIView, в котором есть UITabBar с 4 компонентами UITabBarItem (все они созданы из IB).

Я хочу, чтобы моя функция IBAction вызывалась, когда кто-то нажимает на элементы в панели вкладок. Но я не могу подключить tabbaritem к своему действию через IB ... Я управляю перетаскиванием из «полученных действий», но он не позволяет мне подключить это к tabbaritem.

Спасибо Deshawn

Ответы [ 3 ]

14 голосов
/ 18 апреля 2012

Элемент управления перетащите панель вкладок к «Владельцу файла» в IB и установите его в качестве делегата.Затем добавьте этот код в файл viewcontroller.m:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
    if(item.tag == 0)
    {
        //party like its 1999 right here
    }
}

Вернитесь в IB и установите каждый элемент панели вкладок на панели вкладок с помощью тега.Вы должны проверять каждый случай в вашем didSelectItem, поэтому, если у вас есть более одного, установите другой тег и т. Д. Вот как я это сделал в любом случае.

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

Из вашего вопроса не ясно, определяли ли вы также UITabBarController.

Если вы этого не сделали (как я полагаю, в противном случае нажатие на элемент панели вкладок должно работать, если вы правильно определили вещи в IB),способ назначить UITabBarDelegate для вашего UITabBar и определить tabBar:didSelectItem:

Взгляните на ссылку для UITabBarDelegate

0 голосов
/ 16 мая 2012

Вы не можете установить целевое действие для элементов панели вкладок.У них всегда должен быть новый взгляд.Единственный способ - вы должны использовать делегатов, которые определяют, что к вашему элементу панели вкладок дотронулись, а затем обрабатывать, какая вкладка нажата в этом делегате.

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{
    if(item.tag == 1)
    {
    }
}

Вы должны установить значение тега для вашего элемента панели вкладок изсвойства в xcode.

...