2011-09-15 2 views
0

В моем проекте мне необходимо реализовать функцию ориентации iPhone. Для этого я создал два xib-файла и один файл контроллера UIViewController, один для пейзажа и другой для портрета. Я взял один UIViewController, потому что содержимое xib-файлов одинаково.Автоопределение

Теперь я хочу загрузить соответствующий файл xib в зависимости от поворота, и содержимое должно оставаться заполненным в TextField при загрузке определенного файла. Как мне это реализовать?

КОД:

if(orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight) 
{ 
    NSArray *nibArray = [[NSBundle mainBundle] loadNibNamed:@"landscapeView" owner:self options:nil]; UIView *viewItem = (UIView *)[nibArray objectAtIndex:0]; self.view = viewItem; 
} 
else if(orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown) 
{ 
    //same above lines only different nib name 
} 

ответ

0

Вы можете проверить в вашем init методом UIViewController ориентации устройства, используя следующий код

if (UIDeviceOrientationIsLandscape([[UIDevice currentDevice] orientation]) 
{ 
    // load view for landscape mode 
}else 
{ 
    // load view for portrait mode 
} 

И выбрать .xib файл, который соответствует текущей ориентации.

Надеюсь, это сработает.

+0

Благодарим Вас за helping.Depending по ориентации я загрузил файл острия с помощью следующего кода NSArray * nibArray = [[NSBundle mainBundle] loadNibNamed: @ "UIViewName" владельца: само варианты: ноль]; UIView * lview = (UIView *) [nibArray objectAtIndex: 0]; lview.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @ "Background.jpg"]]; self.view = lview; Дело в том, что я не могу сохранить текстовые значения, введенные пользователем при изменении в uiview.Can вы предлагаете мне переопределяющий метод – user574089

+0

Можете ли вы отправить код? – Nekto

+0

if (orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight) {NSArray * nibArray = [[NSBundle mainBundle] loadNibNamed: @ "LandscapeView" владелец: self options: nil]; UIView * viewItem = (UIView *) [nibArray objectAtIndex: 0]; self.view = viewItem; } еще если (ориентация == UIDeviceOrientationPortrait || ориентация == UIDeviceOrientationPortraitUpsideDown) { же выше строки только разные СИБ имя } – user574089

0

это очень плохой подход, пожалуйста, установите XIB кодом и использовать

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 

выше один для вращения и ниже, чтобы установить XIB.

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 

Я надеюсь, что это вам поможет.