#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
}