Изменение вида с различной ориентацией


Вот моя проблема: в моем приложении есть панель инструментов, где вы можете переключаться между видами. Основной или, по крайней мере, тот, что при запуске, находится в альбомном режиме, а если вы перейдете к любому другому виду, то в портретном. Проблема возникает, когда вы пытаетесь вернуться к первому (пейзаж), вид появляется в портрете, поэтому все виды отображаются неправильно. (Это более или менее ясно? извините, если кажется грязным). Какой-то код у меня здесь:

V1Controller:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

V2Controller:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

-(IBAction)goToV1 {
 V1Controller *v1 = [[V1Controller alloc] init];
 [self.view.superview addSubview:v1.view];
}

Может быть и так что-то с объектом v1 перед добавлением вида? Не знаю, мне нужна твоя помощь.

Проблема решена В переходе вида я пропустил одно предложение, удалить текущий вид из супервизора. И еще то, что говорил @Брэд. Спасибо.

-(IBAction)goToV1 {
     V1Controller *v1 = [[V1Controller alloc] init];
     [self.view.superview addSubview:v1.view];
     [self.view removeFromSuperview];
    }
1 2

1 ответ:

Когда вы говорите:

return (interfaceOrientation == UIInterfaceOrientationPortrait);

Вы позволяете ему поворачиваться только к портрету.

Если вы хотите повернуть к портрету , а затем обратно к ландшафту, просто верните "YES".

Та же логика применима, когда вы говорите

return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);

Вы фактически говорите: "пусть он будет повернут в одну сторону - но Никогда назад в другую сторону"