3

我意识到这里有很多关于制作通用应用程序的问题,但不是关于如何制作一个具有完全不同视图和功能的通用应用程序。我希望用户能够下载一个应用程序,但每个版本都完全不同。这样做的唯一方法是使用 if 语句,感知用户拥有什么设备,然后从那里加载正确的视图控制器(即在委托中,加载正确的第一个视图控制器)?谢谢

4

2 回答 2

5
于 2013-08-18T19:50:07.070 回答
2

这只是Apple的基本通用项目的完成启动方法:

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil];
    } else {
        self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil];
    }
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

...但是,您可以为不同的界面习惯加载不同的视图控制器:

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];

    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        self.window.rootViewController = [[UIPhoneVersionViewController alloc] initWithNibName:@"UIPhoneVersionViewController" bundle:nil];
    } else {
        self.window.rootViewController = [[UIPadVersionViewController alloc] initWithNibName:@"UIPadVersionViewController" bundle:nil];
    }

    [self.window makeKeyAndVisible];
    return YES;
}

...和​​violá,工作完成了。

于 2013-08-18T23:04:42.367 回答