2

UITabBarController使用 Martin 的教程创建了一个自定义。我的子类FSTabBarController在视图控制器之间切换,并且据我所见表现正常。

问题是,当我将 tabBarContoller 更改为我的子类时,它不会响应我的委托;

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController

如果我将它改回 -UITabBarController当我使用默认值UITabBarController时 - 代表会正常工作。

自定义子类使用以下函数来表示选项卡选择:

- (void)_buttonClicked:(id)sender
{
    self.selectedIndex = [sender tag];
    [self _updateTabImage];
}

编辑:

AppDelegate.h

...
@interface AppDelegate : UIResponder <UIApplicationDelegate,UITabBarControllerDelegate>

@property (strong, nonatomic) UIWindow *window;
@property (strong, nonatomic) FSTabBarController *tabBarController;

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
    self.tabBarController = [[FSTabBarController alloc] init];
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:peopleViewController,viewController,profileViewController, nil];
    self.tabBarController.delegate = self;
...
}

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
   // not called when FSTabBarController, called when UITabBarController !!
}
4

1 回答 1

3

好的,从他的网站下载样本并进行测试。是的,您需要从子类手动调用委托:

这就是你应该如何改变 buttonClicked 函数:

- (void)_buttonClicked:(id)sender
{
    self.selectedIndex = [sender tag];
    if (self.delegate) {
        [self.delegate tabBarController:self didSelectViewController:self.selectedViewController];
    }
    [self _updateTabImage];
}
于 2012-09-23T09:58:21.483 回答