Ios 未调用didSelectViewController方法(使用情节提要)

Ios 未调用didSelectViewController方法(使用情节提要),ios,ios5,uitabbarcontroller,storyboard,Ios,Ios5,Uitabbarcontroller,Storyboard,我有两个版本的选项卡式ios5应用程序,一个是使用故事板创建的,另一个是使用xib文件创建的。故事板版本不调用uitabarcontrollerdelegate方法didSelectViewController(xib版本调用)。故事板(我认为)缺少了一些东西,但我不知道是什么。构建问题的另一种方式可能是-如何引用脚本实例化的uitabarcontroller对象 谢谢你的帮助 编辑:设置选项卡栏控制器委托: 在AppDelegate.h中: @interface MyAppDelegate :

我有两个版本的选项卡式ios5应用程序,一个是使用故事板创建的,另一个是使用xib文件创建的。故事板版本不调用
uitabarcontrollerdelegate
方法
didSelectViewController
(xib版本调用)。故事板(我认为)缺少了一些东西,但我不知道是什么。构建问题的另一种方式可能是-如何引用脚本实例化的
uitabarcontroller
对象

谢谢你的帮助

编辑:设置选项卡栏控制器委托:

在AppDelegate.h中:

@interface MyAppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>
@property (strong, nonatomic) UITabBarController *tabBarController;
随后在AppDelegate.m中,委托方法是:

- (void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    NSLog(@"Got Here");
}
NSLog输出从未出现。在我看来,问题在于我没有正确地引用由情节提要实例化的选项卡栏控制器对象。
我该怎么做?

[self-setDelegate:self]
在您的
视图didload
中,或者在对象得到初始化的某个地方

我遇到了这个问题

如果您不使用故事板,那么在
AppDelegate
中设置
UITabBarController
代理是一种方法。但是,对于
情节提要
AppDelegate
不知道
tabbar控制器
在启动时的位置。您可以通过
子类化
tabBarController
并添加委托方法来思考:

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

}
。。。那就足够了。但是,令人恼火的是,事实并非如此

我需要知道用户何时按下了tab按钮。我需要更多地了解这一点,我需要知道viewController的“
-(void)视图将消失:(BOOL)动画{}
“方法已运行

我决定让我的
UITabBarController
成为自己的一个委托人。这对我来说似乎很愚蠢,但我做了以下事情

#import <UIKit/UIKit.h>

@interface PlumbsTabBarController : UITabBarController <UITabBarControllerDelegate>

@end
这使我的选项卡栏委托方法能够运行

疯了还是怎么了

好的-我现在正在编辑这个答案,即使上面的回答都是正确的,当使用
navigationController
时,在触摸每个
TabbBarButton
时,当您尝试
NSLog(@“%@”,viewController)时,
didSelectViewController
委托方法将被选中仅显示您选择了
UINavigationController

因此,增加复杂性的总体解决方案是,在触摸
选项卡按钮
时,为要监视的每个
viewController
UINavigationController
进行子类化


不管怎么说,它对我很管用。而且,如果任何人都能通过上述运球挑刺,他们可能会发现一个有用的方面——这对我来说已经足够了——因为我发现这个网站也非常有用。

你设置了代表吗?你能给我看一些代码吗?选项卡栏委托是在AppDelegate中设置的。h:你能找到关于这个的吗?我也有同样的问题。能用吗?找到答案了吗?你的意思是我必须在TabBarController的第一个NavigationController的第一个ViewController中添加上述方法?请详细说明您的解决方案。在我的情况下,只有当
didSelectViewController
方法也在
UITabBarController
文件中而不是AppDelegate中时,此答案才有效。
#import <UIKit/UIKit.h>

@interface PlumbsTabBarController : UITabBarController <UITabBarControllerDelegate>

@end
[self setDelegate:self];