在我的头文件我有这样的:
@interface TabBarController : UIViewController <UIApplicationDelegate, UITabBarDelegate, UITabBarControllerDelegate>{
IBOutlet UITabBarController *tabBarController;
}
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@end
在我的主文件我有这样的:
@synthesize tabBarController;
-(void)viewDidLoad{
[super viewDidLoad];
self.tabBarController.delegate = self;
self.view = tabBarController.view;
}
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item{
NSLog(@"rawr");
}
- (void)viewDidUnload {
[super viewDidUnload];
}
- (void)dealloc {
[tabBarController release];
[super dealloc];
}
@end
我已经连接了我的tabbarcontroller
作为代表到我的档案在界面生成器拥有者,但仍然没有调用didSelectItem
方法。
有什么,我在这里失踪?
我已经添加了tabBarController.delegate = self;
它仍然不起作用。
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item;
这种方法是UITabBar,没有一个的UITabBarController委托方法,所以
self.tabBarController.delegate = self;
不管用。
标签栏控制器都有自己的UITabBar,但改变一个标签栏控制器管理的标签栏的代表是不允许的,所以只是尝试这样UITabBarControllerDelegate方法:
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
你需要补充一点:
tabbarcontroller.delegate = self;
使用UITabBarControllerDelegate
代替UITabBarDelegate
和
-tabBarController:didSelectViewController{}
代替tabBar:didSelectItem{}
接口
@interface TabBarController : UIViewController <UIApplicationDelegate, UITabBarControllerDelegate, UITabBarControllerDelegate>{
IBOutlet UITabBarController *tabBarController;
}
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;
@end
主文件
@implementation TabBarController
@synthesize tabBarController;
/*other stuff*/
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{
NSLog(@"rawr");
}
/*other stuff*/
@end
刚刚成立的标签栏的委托。 您可以通过设置做self.tabBarController.delegate = self;
或者使用界面生成器做的tabbarcontroller对象(不会吧)看到的连接检查并拖动文件的所有者连接。
你已合成的标签栏,所以你现在需要写: self.tabBarController.delegate = self;
原因是多方面的,如上面所指出的,为什么它可能无法正常工作。 这里是一个更微妙的原因。 如果你创建你的UI编程(没有故事板或XIB),你需要设置一个UIWindow的屏幕。
self.window = [[UIWindow alloc] init];
self.window.screen = [UIScreen mainScreen]; // <- The UITabViewController will not
// accept taps without this.
如果您使用的是厦门国际银行,我相信这是相当于拥有“在启动全屏”选择。 这必须检查或者我注意到我的标签不起作用。
更新:如果你一定要不管,反对票我,但我有一个不工作的选项卡控制器,这是我必须做的就是它的工作。 此页面上的其他答案都不帮我。 我想使用厦门国际银行/故事板是相当罕见的,这些天(我认为这是从的iOS 5天),但离开这里,做和失足掉进这种情况的人。