如何在不分享视图的情况下制作通用iPhone/iPad应用程序?

Ben*_*der 2 iphone ipad ios ios-universal-app

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

Tri*_*ops 5

基本上你想"在一个二进制文件中部署两个不同的应用程序".如果您已经有两个不共享类名称的应用程序(或其他顶级对象名称),那应该非常简单.

您应该运行设备特定的代码,尽快那是main.m.通过iPhone和iPad的不同应用程序委托类.其余应该正常工作,不应使用其他"设备"的类.

int main(int argc, char * argv[]) {
    @autoreleasepool {
        UIUserInterfaceIdiom idiom = [[UIDevice currentDevice] userInterfaceIdiom];
        Class appDelegateClass = Nil;
        if (idiom == UIUserInterfaceIdiomPhone) {
            appDelegateClass = [iPhoneAppDelegate class];
        }
        else if (idiom == UIUserInterfaceIdiomPad) {
            appDelegateClass = [iPadAppDelegate class];
        }
        NSCAssert(appDelegateClass, @"Unexpected idiom! Maybe iWatch?");
        return UIApplicationMain(argc, argv, nil, appDelegateClass));
    }
}
Run Code Online (Sandbox Code Playgroud)

您还可以选择不同的分割点,例如分配不同的根视图控制器.

如果你想要共享一些代码,你可以创建通用超类,例如iPhoneAppDelegate,iPadAppDelegate可以有超类AppDelegate来处理通知或URL处理.