这是我的故事板:
我正在尝试从AppDelegate.m
中的方法访问tabBarController这是AppDelegate.h:
#import <UIKit/UIKit.h>
#import <FacebookSDK/FacebookSDK.h>
#import "STAlertView.h"
@interface demo_AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (nonatomic, strong) STAlertView *av;
@end
这是AppDelegate.m:
#import "demo_AppDelegate.h"
#import "demo_Friends_ViewController.h"
@implementation demo_AppDelegate
-(void)showFriendReqAlert:(NSNotification *)pNotification{
NSLog(@"Hello from showFriendReqAlert:");
NSLog(@"Root: %@", [self.window.rootViewController.navigationController.tabBarController viewControllers]);
}
....
....
....
....
@end
我的主要动机是,当调用此方法showFriendReqAlert:
时,会向第三个标签栏项目Friends
显示红色徽章。但每当我尝试选择tabBarItem时,它在NSLog中都显示为null。
我也尝试过以下方法: self.window.rootViewController.navigationController.tabBarController self.window.rootViewController.tabBarController
但没有任何作用。有什么帮助吗?
谢谢!
答案 0 :(得分:5)
我相信(抱歉相信这里;-) TabBarController应该是你的第一个控制器,你的navigationBarController必须随后出现,因为它对navigationController(如果你改变一个标签)推送/弹出的内容没有多大意义。
我建议你删除你的第一个DemoViewController并关注NavigationController,你的第一个Controller就是你的TabBarController(只需设置&#34;是初始视图控制器&#34;在IB中)。
您可以像这样访问您的tabBar:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UITabBarController *tbc = (UITabBarController *)self.window.rootViewController;
}