iPad 应用程序启动中的基本错误
Posted
技术标签:
【中文标题】iPad 应用程序启动中的基本错误【英文标题】:Basic error in iPad application launch 【发布时间】:2012-02-12 20:47:42 【问题描述】:我有一个名为 MMAppDelegate.m 的文件:
#import "MMAppDelegate.h"
@implementation MMAppDelegate
@synthesize window;
@synthesize viewController;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
viewController = [[MainViewController alloc] init];
[window addSubview:viewController.view];
// Override point for customization after application launch.
[window makeKeyAndVisible];
return YES;
//and more standard methods
MMAppDelegate.h:
#import <UIKit/UIKit.h>
#import "MainViewController.h"
@interface MMAppDelegate : UIResponder <UIApplicationDelegate>
UIWindow *window;
MainViewController *viewController;
@property (nonatomic, retain) UIWindow *window;
@property (nonatomic, retain) MainViewController *viewController;
@end
MainViewController.m:
#import "MainViewController.h"
@implementation MainViewController
- (void)viewDidLoad
NSLog(@"view did load main view controller");
[super viewDidLoad];
self.view.backgroundColor = [UIColor redColor];
@end
然而,当我运行程序时,我得到一个黑屏,并且输出:
2012-02-12 15:44:48.160 MoreMost[44076:f803] view did load main view controller
2012-02-12 15:44:48.163 MoreMost[44076:f803] Applications are expected to have a root view controller at the end of application launch
有什么问题?
【问题讨论】:
【参考方案1】:改变这一行:
[window addSubview:viewController.view];
到这里:
window.rootViewController = viewController;
您需要创建窗口,如下所示:
window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
【讨论】:
您也应该创建UIWindow
。这可能会有所帮助:)【参考方案2】:
您不需要/不想将视图控制器的视图添加为子视图。你想让你的控制器成为根视图控制器,剩下的交给 ios 处理:
window.rootViewController = viewController;
也就是说,从 iOS 4 开始。(如果您要早点返回,则不确定答案。)
您还需要在使用它之前创建窗口。类似的东西
window = [[UIWindow alloc] initWithFrame:UIScreen.mainScreen.bounds];
不知道你是不是没有,或者你只是没有表现出来......
【讨论】:
我正在合成窗口。这够了吗?制作窗口的代码是什么。如果我只是将行更改为 window.rootViewController = viewController,问题仍然存在 不。合成只是创建目标 c getter/setter。请参阅我的更新答案。以上是关于iPad 应用程序启动中的基本错误的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 6 启动失败:尝试在 iPad 上启动应用程序超时
SwiftUI:使用 Sidebar Visible 启动三列 iPad 应用程序