Возможно ли запускать разные проекты iOS нажатием кнопки?

#ios #cocoa-touch

#iOS #cocoa-touch

Вопрос:

У меня есть четыре приложения, и я хочу объединить их в одно приложение.

Если я добавил эти проекты в рабочую область проекта — например, есть project A и project B — возможно ли нажать кнопку и перейти к корневому контроллеру проекта A, затем нажать другую кнопку, чтобы перейти к корневому контроллеру проекта B.

Если это возможно, как я могу это сделать?

Комментарии:

1. Что означает «перейти к проекту корневого контроллера»?

2. после нажатия кнопки перейдите к раскадровке проекта A и запустите его корневой контроллер просмотра

3. Создайте контроллер представления контейнера и добавьте точки входа ваших двух приложений в этот контейнер. Добавьте кнопку в представление controllers container view controllers. Добавьте действие, которое загружает точки входа.

Ответ №1:

возможно ли нажать кнопку и перейти к корневому контроллеру проекта A, затем нажать другую кнопку, чтобы перейти к корневому контроллеру проекта B.

Естественным способом сделать это было бы управлять различными «корневыми» контроллерами представления с помощью контроллера панели вкладок. Например, ваш делегат приложения мог бы создать UITabBarController программно, а затем загрузить его с помощью контроллеров корневого представления из каждой из ваших раскадровок. Это выглядело бы примерно так:

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

    // Project 1
    UIStoryboard *storyboard1 = [UIStoryboard storyboardWithName:@"Project1" bundle:nil];
    UIViewController *controller1 = [storyboard1 instantiateInitialViewController];

    // Project 2
    UIStoryboard *storyboard2 = [UIStoryboard storyboardWithName:@"Project2" bundle:nil];
    UIViewController *controller2 = [storyboard1 instantiateInitialViewController];

    // Project 3
    UIStoryboard *storyboard3 = [UIStoryboard storyboardWithName:@"Project3" bundle:nil];
    UIViewController *controller3 = [storyboard1 instantiateInitialViewController];

    // Project 4
    UIStoryboard *storyboard4 = [UIStoryboard storyboardWithName:@"Project4" bundle:nil];
    UIViewController *controller4 = [storyboard1 instantiateInitialViewController];

    // Add the controllers to the tab controller
    [self.tabBarController setViewControllers:@[controller1, controller2, controller3, controller4]
                                     animated:NO];

    //...put any other app initialization stuff here...

    return YES;
}
  

На этом этапе на панели вкладок будет четыре кнопки, по одной для каждого «корневого» контроллера представления, и вы сможете переключаться между ними по своему желанию.

Я не скомпилировал вышеуказанное, но этого должно быть достаточно, чтобы вы начали. Вам, конечно, придется разобраться с любыми зависимостями, которые различные контроллеры просмотра могут иметь от делегата приложения и т.д. Но это не должно быть слишком сложно. Вы также должны убедиться, что в каждом контроллере просмотра настроен элемент панели вкладок, чтобы контроллер панели вкладок знал, какой значок и название использовать на соответствующей кнопке.