iOS检测选项卡是否已更改

时间:2012-04-08 18:40:56

标签: objective-c ios5

我有标签式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

但是,我无法使用上面的代码检测标签更改。您认为问题是什么?

我没有将我的标签视图链接到任何商店,但是与其他视图相关联。这是问题吗?然后,我应该在哪里连接我的插座?

2 个答案:

答案 0 :(得分:3)

您是否确认正在调用init方法?我不认为initUITabBarController的指定初始化程序,并且在从笔尖/故事板加载控制器时可能不会被调用。

如果是这种情况,您可能会发现在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;
}