0

使用 Xcode 4.2,我的应用程序在 iOS 5.0 模拟器中运行。它在装有 iOS 4.2.1 的 3G iPhone 上运行。它不能在装有 iOS 3.1.3 的 iPod 上运行。

这是我从许多教程中获得的样板代码,但在 iOS 3.1.3 设备上,显示我的 Default.png 后,此行失败:

self.window.rootViewController = self.viewController;

在我的ykAppDelegate.m此处使用“发送到实例的无法识别的选择器”:

#import "ykAppDelegate.h"
#import "ykViewController.h"

@implementation ykAppDelegate

@synthesize window;
@synthesize viewController;

#pragma mark -
#pragma mark Application lifecycle

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

    // Override point for customization after application launch.

    // Set the view controller as the window's root view controller and display.
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];

    return YES;
}

粗略地看一下代码,我注意到 viewController 显然没有被实例化(除了@synthesize);它只是在我的声明中ykAppDelegate.h

#import <UIKit/UIKit.h>

@class ykViewController;

@interface ykAppDelegate : NSObject <UIApplicationDelegate> {
    UIWindow *window;
    ykViewController *viewController;
}

@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet ykViewController *viewController;

@end

我可以进行一些小调整,以便在 iOS 3.1 中运行吗?

4

2 回答 2

1

在 iOS5 之前的操作系统中,UIWindow 没有名为“rootViewController”的属性。一个惯用的解决方案是简单地将视图控制器的视图作为子视图添加到应用程序的关键窗口中:

[window addSubview:self.myViewController.view];
于 2012-04-30T14:29:07.417 回答
0

这对我有用

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

    // Override point for customization after application launch.

    // Set the view controller as the window's root view controller and display.
    [window addSubview:self.viewController.view];
    [self.window makeKeyAndVisible];

    return YES;
}
于 2012-05-01T03:51:41.433 回答