簡體   English   中英

如何從 AppDelegate.m 訪問 tabBarController?

[英]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(如果你改變一個選項卡)推/彈出什么沒有多大意義。

我建議你刪除你的第一個DemoViewControllerNavigationController並且你的第一個控制器是你的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM