#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;
}
На этом этапе на панели вкладок будет четыре кнопки, по одной для каждого «корневого» контроллера представления, и вы сможете переключаться между ними по своему желанию.
Я не скомпилировал вышеуказанное, но этого должно быть достаточно, чтобы вы начали. Вам, конечно, придется разобраться с любыми зависимостями, которые различные контроллеры просмотра могут иметь от делегата приложения и т.д. Но это не должно быть слишком сложно. Вы также должны убедиться, что в каждом контроллере просмотра настроен элемент панели вкладок, чтобы контроллер панели вкладок знал, какой значок и название использовать на соответствующей кнопке.