iOS检测标签是否被更改
问题描述:
我有选项卡式iOS应用程序。我需要知道哪个选项卡处于活动状态,并检测选项卡更改的时间。在故事板中,我有一个选项卡视图控制器,当您单击一个选项卡时更改视图。我创建了一个类TabBarController
和它的定义如下:iOS检测标签是否被更改
部首
@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
然而,我无法检测到与上述代码标签的变化。你认为这个问题是什么?
我没有将我的标签页视图链接到任何网点,但是转到其他视图。这是问题吗?那么,我应该在哪里连接我的插座?
答
解决,这是实现viewDidLoad中如下:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
NSLog(@"Tabs showed up!");
self.delegate = self;
}
答
您确定您的init
方法正在被调用吗?我不认为init
是UITabBarController
的指定初始化程序,从nib/storyboard加载控制器时可能不会调用。
如果是这样的话,你可能会发现更容易设置委托在viewDidLoad
因为这将不考虑所谓的对象是如何初始化,否则请务必设置委托时-initWithNibName:bundle:
或-initWithCoder
来实例化对象。
+0
感谢@Jonah。我通过把self.delegate = self解决了这个问题;到viewDidLoad中。 – mert 2012-04-08 19:13:13
为什么在接受O_o时如此低估? – Alfabravo 2017-06-12 18:22:03