Вау, я много размышлял над вопросом!Как я могу нажать новый контроллер просмотра с помощью кнопки в subView (другой контроллер просмотра) в Storyboard
Итак, у меня есть контроллер вида «ContentView» в другом представлении Controller (Main VC). В главном VC есть контроллер навигации, который был создан с использованием раскадровки. И ContentView загружает 3 разных контроллера вида (vc1, vc2 и vc3) в зависимости от параметров, которые имеет Сегментированный элемент управления. Итак, вопрос в следующем:
Как загрузить новый контроллер просмотра с помощью кнопки в одном из подзонов (vc2), который появится, когда пользователь выберет опцию из сегментированного элемента управления?
Хотя у меня есть видимый контроллер представления (VC2) в моей раскадровке, очевидно, я не могу подключиться действием к кнопке для владельца файла VC2' , так как Nav контроллер находится на главном VC.
Я пытался получить к нему доступ с помощью следующего кода:
AppDelegate *del = (AppDelegate *)[UIApplication sharedApplication].delegate; UINavigationController *navigationController = (UINavigationController*)del.window.rootViewController; DetalleMisMarcas *detalleMarcas = [[DetalleMisMarcas alloc] initWithNibName:@"DetalleMarcas" bundle:nil]; [navigationController pushViewController:detalleMarcas animated:YES];
Но это не работает.
Я попытался найти решение на этом форуме, но мне не повезло. Большинство считают, что существование главного окна Xcode 4.2 не имеет.
Наконец, как я загрузить 3 подвидами, находится здесь:
-(IBAction)segmentCtrlChanged:(id)sender {
UISegmentedControl *seg = sender;
if (seg.selectedSegmentIndex == 0)
{
MMViewController *mm= [self.storyboard instantiateViewControllerWithIdentifier:@"MMView"];
mm.view.frame = CGRectMake(0, 0, 320, 240);
[contentView addSubview:mm.view];
}
else if (seg.selectedSegmentIndex == 1) {
MPViewController *mp = [self.storyboard instantiateViewControllerWithIdentifier:@"MPView"];
mp.view.frame = CGRectMake(0, 0, 320, 240);
[contentView addSubview:mp.view];
}
}
-(IBAction)mainSubView:(id)sender
{
MMViewController *mm = [[MMViewController alloc] initWithNibName:@"MTView" bundle:nil];
[contentView addSubview:theMTView];
mm.view.frame = CGRectMake(0, 0, 320, 240);
}
Любые идеи?
Спасибо, что дело в том, что у меня нет проблем с загрузкой контроллеров представления (vc1, vc2 и vc3) из другого представления под названием contentView. ContentView не занимает весь вид из Main View со своим собственным V C, он занимает только нижнюю часть представления. Проблема в том, что у меня есть элементы управления в каждом контроллере представления (vc1, vc2 и vc3), внутри contentView, который является подзором основного вида. Так что я хочу сделать, чтобы нажать новый контроллер представления на главный вид, но с помощью кнопки, которая находится в другом представлении с другим контроллером представления (vc1 или vc2 или vc3) в основном представлении. – naSh
Извините, не ясно, что именно вы пытаетесь сделать. В этом случае вы пробовали создавать делегаты, чтобы указать MainView, что добавить в его подвид? Это может сработать. – Canopus