启动画面后黑屏 iOS

3

我正在进行一项高级项目,最近在闪屏后我的应用程序开始只加载黑屏。我没有使用storyboards。我一直在寻找解决这个问题的方法,但似乎不能将其他解决方案适应到我的项目中。 我的 [github] (https://github.com/cleif/Hastings/tree/Fixed) 在此提供了最新版本的构建。以下是我的AppDelegate.h和.m文件中的代码。

.h

#import <UIKit/UIKit.h>
#import "IIViewDeckController.h"
#import "MenuViewController.h"
#import "HomeViewController.h"
#import "AboutViewController.h"
#import "AthleticsViewController.h"
#import "BroncoBoardViewController.h"
#import "ContactsTableViewController.h"
#import "MapViewController.h"

@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@property (retain, nonatomic) UIViewController *menuViewController;
@property (retain, nonatomic) UIViewController *rootViewController;

@end

.m

#import "AppDelegate.h"

@implementation AppDelegate

@synthesize menuViewController = _menuViewController;

- (IIViewDeckController*) initializeMainViewControllers {

UIViewController *menuViewController      = [[MenuViewController alloc] init];
UIViewController *rootViewController      = [[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil];

IIViewDeckController* deckController      = [[IIViewDeckController alloc] initWithCenterViewController:[[UINavigationController alloc] initWithRootViewController:rootViewController]
                                                                                    leftViewController:menuViewController];

return deckController;
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

IIViewDeckController* deckController    = [self initializeMainViewControllers];

self.menuViewController                 = deckController.leftController;
self.rootViewController                 = deckController.centerController;

self.window.rootViewController          = deckController;
[self.window makeKeyAndVisible];

return YES;
}

@end

任何关于此的建议将不胜感激。

这只发生在模拟器中吗?因为我也见过这种情况,将应用程序发送到后台,然后再切换回前台似乎可以恢复应用程序。 - rckoenes
1
你的 self.window 似乎是空的。尝试在你的 application:didFinishLaunchingWithOptions: 中添加 self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - spassas
1个回答

5
我已经收到您的代码,并在 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中添加了下面这行代码,现在它可以正常工作了。
self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]]; 

所以你的didFinishLaunchingWithOptions方法必须像这样:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

self.window = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen]bounds]];

IIViewDeckController* deckController    = [self initializeMainViewControllers];

self.menuViewController                 = deckController.leftController;
self.rootViewController                 = deckController.centerController;

self.window.rootViewController          = deckController;
[self.window makeKeyAndVisible];

return YES;
}

1
不用谢,很高兴能帮助别人。欢迎随时来问我问题。 - Mohit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接