0

我用 iOS 6 ARC 和 Storyboards 开始了一个新项目

我制作了一个非常简单的应用程序,它有一个 Tabbar 和 2 个视图

在此处输入图像描述

所以现在我创建了一个扩展 UITabBarController 的 TestViewController 文件,并将自定义类放在情节提要中。

现在的问题是我正在尝试实现一些委托方法,例如

- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController;

但它从不调用它。任何人都可以帮忙吗?

我也注意到,如果我将该代码放在第一个视图控制器中,它可以正常工作。似乎第一个视图控制器之前覆盖了 TabBarController。我很困扰。

为了进行更多测试,我在 TestViewController.m 中添加了一些日志记录:

- (void)viewDidLoad { 
   [super viewDidLoad];
   // Do any additional setup after loading the view.
   NSLog(@"%@",self.tabBarController.viewControllers);
}

并且视图控制器为空。

我什至试着做self.tabBarController.delegate = self;

但仍然没有解决办法。

4

2 回答 2

1

TestViewController 是你的标签栏控制器,所以你的日志应该只是 self.viewControllers,而不是 self.tabBarController.viewControllers。您也不需要添加属性 viewControllers,因为您的子类从 UITabBarController 继承了该属性。未调用您的委托消息的原因是同样的问题。您应该使用(在 TestViewController 中)设置委托:

self.delegate = self;

这是假设您希望 TestViewController 成为委托,我不清楚这是否是您想要的。

于 2013-07-26T18:37:07.220 回答
0

您是否尝试在 Interface Builder 中链接它们?首先将其添加到您的头文件中 @property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;

于 2013-07-26T15:49:23.693 回答