TabBarController didSelectViewController 不工作
Posted
技术标签:
【中文标题】TabBarController didSelectViewController 不工作【英文标题】:TabBarController didSelectViewController not working 【发布时间】:2012-12-04 16:18:33 【问题描述】:我知道这是一个非常重复的话题,但我无法让它发挥作用。
MainTab.h:
#import <UIKit/UIKit.h>
@interface MainTab : UITabBarController<UITabBarControllerDelegate, UITabBarDelegate>
IBOutlet UITabBarController *tabController;
@property (nonatomic,retain) IBOutlet UITabBarController *tabController;
@end
MainTab.m
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
// Custom initialization
return self;
- (void)viewDidLoad
NSLog(@"main tab");
[super viewDidLoad];
self.tabBarController.delegate = (id)self;
[self setDelegate:self];
// Do any additional setup after loading the view.
- (void)viewDidUnload
[super viewDidUnload];
// Release any retained subviews of the main view.
-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
NSLog(@"selected %d",tabBarController.selectedIndex);
我找不到我缺少的东西,我们将不胜感激。
现在我尝试将它链接到 MainStoryBoard:
但是不行,是什么关系?
【问题讨论】:
如何创建MainTab
对象??
@Rob 是的,你是对的 - 我不知何故错过了问题的“控制器”部分,认为它是一个带有标签栏组件的自定义控制器。我删除了我的评论,并为您的详细回答投票。
【参考方案1】:
根据您的@interface
(以及您随后的屏幕快照),MainTab
是UITabBarController
,因此以下行:
self.tabBarController.delegate = (id)self;
应该是:
self.delegate = self;
您不希望 tabBarController
本身具有 tabBarController
属性,也不想使用 self.tabBarController
语法。如果您尝试从其子控制器之一引用选项卡栏控制器,则仅使用该语法。在标签栏控制器本身时,只需参考self
。
因此,如果 MainBar
定义为:
// MainBar.h
#import <UIKit/UIKit.h>
@interface MainBar : UITabBarController
@end
和
// MainBar.m
#import "MainBar.h"
@interface MainBar () <UITabBarControllerDelegate>
@end
@implementation MainBar
- (void)viewDidLoad
[super viewDidLoad];
self.delegate = self;
-(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
NSLog(@"selected %d",tabBarController.selectedIndex);
@end
并且不要忘记设置标签栏控制器的类:
连接检查器(我没有触摸任何东西)看起来像:
【讨论】:
不,我不能!当我尝试控制+拖动时,我移动 TabItems MainTab 设置正确,我有一个 NSLog 来检查它,用你的代码解决了 优秀的答案。关键是通过代码来完成,而不是 IB以上是关于TabBarController didSelectViewController 不工作的主要内容,如果未能解决你的问题,请参考以下文章
在 TabBarController 上刷新 ViewController