1

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

但是,我无法使用上面的代码检测选项卡更改。你认为问题是什么?

我没有将我的选项卡视图链接到任何网点,而是连接到其他视图。这是问题吗?那么,我应该将我的插座链接到哪里?

4

2 回答 2

3

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

如果是这种情况,您可能会发现在您的中设置委托更容易,viewDidLoad因为无论对象如何初始化,都会调用该委托,或者确保您在何时-initWithNibName:bundle:-initWithCoder用于实例化对象时设置委托。

于 2012-04-08T18:58:33.860 回答
-3

对此的解决方案是实现 viewDidLoad,如下所示:

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    NSLog(@"Tabs showed up!");
    self.delegate = self;
}
于 2012-04-24T14:56:50.360 回答