我有标签式iOS应用程序。我需要知道哪个选项卡处于活动状态,并检测选项卡何时更改。在故事板中,我有一个标签视图控制器,当您单击标签时,它会更改视图。我创建了一个类TabBarController
,其定义如下:
标题
@interface TabBarController : UITabBarController <UITabBarControllerDelegate>
@end
实施
#import "TabBarController.h"
@implementation TabBarController
// In the initialization section, set the delegate
- (id) init
{
self = [super init];
if (self)
{
self.delegate = self;
}
return self;
}
- (void)tabBarController:(UITabBarController *)tabBarController
didSelectViewController:(UIViewController *)viewController
{
NSLog(@"controller class: %@", NSStringFromClass([viewController class]));
NSLog(@"controller title: %@", viewController.title);
}
@end
但是,我无法使用上面的代码检测标签更改。您认为问题是什么?
我没有将我的标签视图链接到任何商店,但是与其他视图相关联。这是问题吗?然后,我应该在哪里连接我的插座?
答案 0 :(得分:3)
您是否确认正在调用init
方法?我不认为init
是UITabBarController
的指定初始化程序,并且在从笔尖/故事板加载控制器时可能不会被调用。
如果是这种情况,您可能会发现在viewDidLoad
中设置委托更容易,因为无论对象是如何初始化的,都会调用该委托,或者确保在-initWithNibName:bundle:
时设置委托或-initWithCoder
用于实例化对象。
答案 1 :(得分:-3)
解决方法是实现viewDidLoad,如下所示:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
NSLog(@"Tabs showed up!");
self.delegate = self;
}