我在整个项目中使用Application Manager As Singleton类。在Appdelegate中,我将tabbarviewcontroller(即storyboard中的rootviewcontroller)设置为applicationManger mainviewcontroller。
当我运行应用程序时,它会在启动屏幕上被触发,尽管控件转到了applicationManager函数,可以通过使用break points来观察...请帮助!!!
在AppDelegate中
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[ApplicationManager sharedService] setMainViewController:(UITabBarController *)self.window.rootViewController];
return YES;
}
ApplicationManager.h
#import <UIKit/UIKit.h>
@interface ApplicationManager : NSObject<UITabBarControllerDelegate>
{
UIImageView *imgView;
}
@property (nonatomic,weak) UITabBarController *mainViewController;
ApplicationManager.m
@implementation ApplicationManager
@synthesize mainViewController = _mainViewController;
+ (void)load
{
[self performSelectorOnMainThread:@selector(sharedService) withObject:nil waitUntilDone:NO];
}
- (ApplicationManager *)init {
if (self != nil) {
self = [super init];
self.exceptionErrorMessages = [NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:ErrorMessagesFileName ofType:ErrorMessagesFileType]];
}
return self;
}
+ (ApplicationManager *)sharedService {
@synchronized(self) {
static ApplicationManager *_service = nil;
if (_service == nil) {
_service = [[ApplicationManager alloc] init];
}
return _service;
}
}
- (void)setMainViewController:(UITabBarController *)mainViewController
{
_mainViewController = mainViewController;
_mainViewController.delegate = self;
UITabBarItem *loginItem = _mainViewController.tabBar.items[3];
UIImage *unSelectedImage = [[self imageFromString:@"" withColor:[UIColor redColor]]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIImage *selectedImage = [[self imageFromString:@"" withColor:[ColorUtility appBlueColor]]imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
if ([SharedManager getInstance].isLoggedIn)
{
loginItem.title = @"Logout";
[_mainViewController setSelectedIndex:TabBarTagInspection];
}
else
{
loginItem.title = @"Login";
[_mainViewController setSelectedIndex:TabBarTagLogin];
}
UITabBarItem *syncItem = _mainViewController.tabBar.items[0];
syncItem.image = [self imageFromString:@"" withColor:nil];
UITabBarItem *inspectionItem = _mainViewController.tabBar.items[1];
inspectionItem.image = [self imageFromString:@"\uE8ac" withColor:nil];
UITabBarItem *vendorItem = _mainViewController.tabBar.items[2];
vendorItem.image = [self imageFromString:@"\uE85f" withColor:nil];
UITabBarItem *materialItem = _mainViewController.tabBar.items[3];
materialItem.image = [self imageFromString:@"" withColor:nil];
loginItem.image = unSelectedImage;
loginItem.selectedImage = selectedImage;
}
STORYBOARD ScreenShot
答案 0 :(得分:0)
上述代码的单人实施是错误的。静态变量应在共享函数之外定义。
@implementation ApplicationManager
static ApplicationManager *_service = nil;
共享功能正在重置_service变量。可能为时已晚,但我回答了一下,可能会对某人有所帮助