【问题标题】:How to merge two ios apps into one如何将两个ios应用合并为一个
【发布时间】:2014-08-05 05:26:57
【问题描述】:

我有两个 ios 应用程序的一个变体是给教师的,第二个版本是给学生的。学生版本是过去两年在应用商店上线的。这个版本是非 ARC 项目。现在开发了应用程序的教师变体。此版本使用故事板并具有 ARC。

我的问题是,在学生版中,应用程序是基于标签栏的,并且标签栏在应用程序委托中声明。而在教师版中,应用程序基于高度定制的 uinavigation 控制器,例如菜单中的侧滑;在应用程序委托也是。现在我的问题是如何将这两个项目合并到一个 iPhone 应用程序中。

可以根据登录名识别教师和学生。

【问题讨论】:

    标签: ios iphone


    【解决方案1】:

    我会尝试将学生版重新制作成故事板(与教师版分开)并将其更新为 ARC。然后,根据登录结果(学生或教师),加载相应的故事板。因此,在获得登录结果后,您可以执行以下操作:

     UIStoryboard *storyBoard;
     if (isStudent) {
       storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_student" bundle:nil];
     }
     else {
        NSLog(@"teacher!");
        storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_teacher" bundle:nil];
     }
    
    UIViewController *initViewController = [storyBoard instantiateInitialViewController];
    [self.window setRootViewController:initViewController];
    

    为确保您的应用会替换商店中的应用,请确保为新组合应用保留与商店中当前学生版本相同的捆绑 ID。

    如果不想将学生版文件转成ARC,可以将项目转成ARC,但是用-fno-objc-arc标志标记尚未转成arc的学生类

    基本上,单击项目文件,选择您的目标,选择 Build Phases 选项卡,对于每个不使用 ARC 的旧项目文件,在 Compile 的 Compiler Flags 字段中添加 -fno-objc-arc来源部分。

    【讨论】:

      【解决方案2】:

      如果在登录阶段可以同时识别教师和学生,为了解决这个问题,您很可能需要在您的AppDelegate 中创建一个统一的登录页面(根视图控制器)。然后在用户登录后,您确定应用程序的哪个部分更合适,并显示嵌入在UINavigationControllerUITabBarController 中的下一个视图控制器。

      【讨论】:

        【解决方案3】:

        您可以通过在学生项目的所有类文件中添加编译器标志 -fno-objc-arc 来使学生项目与 ARC 兼容。

        从项目设置中删除故事板的自动加载,在 AppDelegate 中定义加载根视图的逻辑。

        if (isStudent) {
           UIViewController *rootViewController = [[UIViewController alloc] init];//whatever you appdelegate code for student is
           [self.window setRootViewController:rootViewController];
         }
         else {
           NSLog(@"teacher!");
           UIStoryboard *storyBoard;
           storyBoard = [UIStoryboard storyboardWithName:@"MainStoryboard_teacher" bundle:nil];
           UIViewController *initViewController = [storyBoard instantiateInitialViewController];
           [self.window setRootViewController:initViewController];
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-11-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-21
          • 2021-09-28
          相关资源
          最近更新 更多