[英]How to access tabBarController from AppDelegate.m?
這是我的故事板:
我正在嘗試從 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
但沒有任何效果。 有什么幫助嗎?
謝謝!
我相信(對不起,相信這里 ;-) TabBarController
應該是你的第一個控制器,你的navigationBarController
必須在之后出現,因為它對 navigationController(如果你改變一個選項卡)推/彈出什么沒有多大意義。
我建議你刪除你的第一個DemoViewController
和NavigationController
並且你的第一個控制器是你的TabBarController
(只需在 IB 中設置“是初始視圖控制器”)。
然后你可以像這樣訪問你的tabBar
:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UITabBarController *tbc = (UITabBarController *)self.window.rootViewController;
}
斯威夫特 5:
guard let tabBarController = window?.rootViewController as? UITabBarController else { return }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.