我正在尝试在每次按下标签栏按钮时捕获该事件,并在UITabBarControllerDelegate
以下函数中将AppDelegate.h
添加到AppDelegate.m
文件但未调用它。我还将tabBarController
代表连接到IB的第一响应者
有人可以帮我解决这个问题吗?
// AppDelegate.h
@interface AppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>
// AppDelegate.m
- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
NSLog(@"Touched Tab\n");
}
答案 0 :(得分:0)
如果我理解你的图形,你的“代表”不应该是“第一响应者”(谁知道设置的是什么;它可能是视图控制器,也可能是键盘或基本上它是设置的任何对象成为第一个响应者......)。
相反,您需要将委托设置为您编码的委托方法实际存在的对象或类(您的视图控制器?)。看起来应该将委托设置为“AppDelegate
”对象。
答案 1 :(得分:0)
请将您的代表与AppDelegate绑定,而不是与FirstResponder绑定。
答案 2 :(得分:0)
以下功能需要的只是两行才能使委托工作。希望它为某人节省时间和挫折。
// AppDelegate.m
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.m_pTabBarController = (UITabBarController *)self.window.rootViewController;
self.m_pTabBarController.delegate = self;
return YES;
}
// AppDelegate.h
@interface ftAppDelegate : UIResponder <UIApplicationDelegate, UITabBarControllerDelegate>{
IBOutlet UITabBarController *m_pTabBarController;
}
@property(强大的,非原子的)UIWindow *窗口;
@property(nonatomic,retain)IBOutlet UITabBarController * m_pTabBarController;
@end