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