Два UIViews в одном файле .xib? - PullRequest
0 голосов
/ 23 апреля 2010

я сделал второй просмотр в mei .xib файле. первый вид - альбомный, и я получаю его по следующему коду

ItemController *newItem;
newItem = [[ItemController alloc] init];
newItem.view.....

как я могу "активировать" второе представление, чтобы я мог использовать его с

newItem.view2...

это возможно? второй вид - режим портрета, поэтому он должен быть скрыт, и при повороте ipad первый вид должен быть скрыт, а второй становится видимым.

спасибо

Ответы [ 2 ]

2 голосов
/ 24 апреля 2010

Если я правильно понимаю ваш вопрос, вы можете использовать метод willRotateToInterfaceOrientation:duration: в UIViewController.

Вы можете объявить две переменные UIView и установить соединения с ними, используя IB:

IBOutlet UIView *view1;
IBOutlet UIView *view2;

Затем в willRotateToInterfaceOrientation:duration: вы можете поменять местами представления. Предполагая, что ваш ItemController является подклассом UIViewController, вы можете получить что-то вроде этого:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) || (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
        [self setView:view1];
    }
    else {
        [self setView:view2];
    }
}

Когда пользователь поворачивает iPad, этот метод вызывается автоматически.

ПРИМЕЧАНИЕ: убедитесь, что вы установили shouldAutorotateToInterfaceOrientation: для возврата YES, и вам, возможно, придется проверить ориентацию, чтобы изначально установить для свойства представления правильный вид.

РЕДАКТИРОВАТЬ: Мой ответ предполагает, что у вас есть два вида с разными макетами / элементами, а не два вида, которые по сути одинаковы по размеру для разных ориентаций. Если последнее так, то, вероятно, есть лучший способ сделать это, используя только одно представление.

1 голос
/ 24 апреля 2010

Подход, который вы используете, приведет вас к неприятной ситуации, когда у вас есть IBActions, чтобы связать ее с нажатием кнопок или изменить текст метки (который находится на xib) и т. Д. Наилучшим подходом является изменение ширины и положения высоты рамки при изменении ориентации. Хотя это сложно в начале, но это избавит вас от многих неприятностей.

Для проверки поддержки Поверните UIViewController, чтобы противодействовать изменениям в UIInterfaceOrientation

Надеюсь, это поможет.

Спасибо

Madhup

...