没有调用tabBarController的委托

时间:2016-01-22 00:25:02

标签: ios objective-c delegates tabbarcontroller

我有一个自定义的TabBarController,其中有一个更大的中心按钮,当用户按下按钮时,它会调用一个函数 centerButtonClicked 。它运行正常,但问题是没有调用委托方法 shouldSelectViewController ,因为我以编程方式设置tabBarItem。我试图手动调用委托,但即使我在方法中返回NO,它仍然选择tabBarController的视图。除自定义项之外的所有其他选项卡栏项都调用委托方法。我需要将NO返回到某个视图,以便我可以向用户显示警报视图。任何人都有解决这个问题的方法吗?

这里描述了这个问题,但它对我不起作用: How can I programmatically set selected tab of UITabBarController while also triggering shouldSelectViewController in UITabBarControllerDelegate

在AppDelegate中:

CustomTabBarControllerViewController *tabBarController = [[CustomTabBarControllerViewController alloc] init];

tabBarController.delegate = [TabBarController sharedManager];

sharedManager是一个返回控制器单例的类方法。

在CustomTabBarControllerViewController中:

- (void)centerButtonClicked:(id)sender
{
[self setSelectedIndex:2];

[self performSelector:@selector(doHighlight:) withObject:sender afterDelay:0];

[self.delegate centerButtonPressed:sender];

[self.delegate tabBarController:self shouldSelectViewController:[self.viewControllers objectAtIndex:2]];

}

更新

在CustomTabBarControllerViewController.h中,我声明了以下协议:

@protocol CustomTabBarControllerViewController <NSObject>

- (void)centerButtonPressed: (id)sender;

@end

@interface CustomTabBarControllerViewController : UITabBarController 

@property (nonatomic, strong) IBOutlet UIButton *centerButton;

@property(nonatomic, weak) id<UITabBarControllerDelegate, CustomTabBarControllerViewController> delegate;

@end

这是[self.delegate tabBarController:self shouldSelectViewController:[self.viewControllers objectAtIndex:2]];的委托。是指。

0 个答案:

没有答案