gpt4 book ai didi

ios - 如何从 AppDelegate.m 访问 tabBarController?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:27:00 24 4
gpt4 key购买 nike

这是我的 Storyboard: storyboard

我正在尝试从 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: 被调用时,红色角标(Badge)显示到第三个标签栏项目,即 Friends。但是每当我尝试选择 tabBarItem 时,它在 NSLog 中显示 null。

我也试过以下方法:self.window.rootViewController.navigationController.tabBarControllerself.window.rootViewController.tabBarController

但没有任何作用。有帮助吗?

谢谢!

最佳答案

我相信(很抱歉相信这里 ;-) TabBarController 应该是您的第一个 Controller ,而您的 navigationBarController 必须在之后出现,因为它对navigationController(如果您更改选项卡)要推送/弹出的内容。

我建议您删除第一个 DemoViewController 和后面的 NavigationController 并且您的第一个 Controller 是您的 TabBarController(只需设置“Is Initial View IB 中的“ Controller ”)。

然后你可以像这样访问你的tabBar:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UITabBarController *tbc = (UITabBarController *)self.window.rootViewController;
}

swift 5:

guard let tabBarController = window?.rootViewController as? UITabBarController else { return }

关于ios - 如何从 AppDelegate.m 访问 tabBarController?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27135691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com