Раскадровка контроллера панели вкладок событие нажатия на элемент панели вкладок

#ios #objective-c #xcode #uitabbarcontroller #uitabbaritem

#iOS #objective-c #xcode #uitabbarcontroller #uitabbaritem

Вопрос:

У меня есть контроллер панели вкладок в раскадровке, подключенный к 2 представлениям. В представлении 2 (TimelineView) Я установил в файле .h:

 @interface Timeline_Overview : UIViewController<UITabBarDelegate>{
}
@property (nonatomic, retain) IBOutlet UITabBarItem *PostImage;
  

И в файле .m:

 -(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item
{

NSLog(@"test");
if(item.tag==2)
{

    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UITabBarController *TimeLine = [mainStoryboard instantiateViewControllerWithIdentifier:@"Post_Photo_One"];
    [self presentViewController:TimeLine animated:YES completion:nil];
}
else
{
    //your code
}
}
  

но эта пустота не срабатывает : (

Вот рисунок из раскадровки: Раскадровка

Кто-нибудь может помочь?

Редактировать:

вот моя проверка, она похожа на вашу, и она не работает: (

введите описание изображения здесь

РЕДАКТИРОВАТЬ 2:

Здесь, в моей раскадровке, я установил пользовательский класс в свой «Timeline_Overview» на вкладке «Опубликовать изображение», но он не работает: ( введите описание изображения здесь

Ответ №1:

Измените в инспекторе соединений делегирование UITabBarController delegate в storyboard вашему соответствующему классу, см. скриншот:

введите описание изображения здесь

и не забудьте изменить инспектор идентификации на свою пользовательскую панель вкладок:

введите описание изображения здесь

Комментарии:

1. Спасибо за ваш повтор: я отредактировал свой вопрос, у меня он такой, как на вашем рисунке, но он не работает : (

2. Хорошо, у меня есть, но это не работает, если я нажимаю на вкладку «PostImage», пустота не срабатывает : (

3. Перетаскивание Ctrl. Вы также можете сделать это с помощью кода, но не забудьте изменить пользовательский класс в инспекторе идентификации на свой пользовательский TabBarController

4. Хорошо, я подключил делегат от контроллера панели вкладок к панели вкладок, и является ли вкладка PostImage, которую я установил в пользовательском классе, моим классом, который я разместил выше, правильно?

5. Извините, чувак, я думаю, что я не объяснил мне ясно. Если вы не наследуете от UITabBarController и просто хотите быть его делегатом, поэтому оставьте пользовательский класс как UITabBarController (в инспекторе идентификации) и задайте с помощью кода делегат, подобный: ‘myTabBar.delegate = self;’

Ответ №2:

Если вы используете раскадровку, сделайте это

в didFinishLaunchingWithOptions

 UITabBarController *tabBar = (UITabBarController *)self.window.rootViewController;
[tabBar setDelegate:self];
  

Также в AppDelegate сохранить <UITabBarControllerDelegate>

И затем

 -(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
   //Write your code here
}