2013-06-05 3 views
1

фонSplitView Ориентация вопрос. (Портретный режим)

У меня есть IPad SPLITVIEW application.The разделить мнение контроллер rootview для window.I нужен экран входа для приложения и, следовательно, я представляю его как так: [self.splitViewController presentViewController:self.loginView animated:NO completion:nil];. У меня есть popover на главном представлении, привязанный к панели навигации UIBarButtonItem, которая помогает пользователю выйти из системы. Это работает gr8.

Проблема:

мне нужно поддерживать обе ориентации и поэтому мастер вид должен быть показан в портретном режиме, как well.The первой проблемой я столкнулся, когда пользователь входит из приложения в портрете режим, вид мастера не отвергалось и представлен вид Логина, когда мастер вид еще visible.I удался исправить это тиражирование события нажмите на левой кнопке бара, как так:

[self.detailViewController.navigationItem.leftBarButtonItem.target performSelector:self.detailViewController.navigationItem.leftBarButtonItem.action]; 

Это приводит к второй проблеме. Когда я выхожу из системы, главный просмотр убирается корректно с помощью вышеприведенного фрагмента и появляется вид входа в систему. Но теперь, если я изменю свою ориентацию на пейзаж и снова войду, основное представление заменяется на черную полосу (равную ширине в режиме просмотра). что splitview все еще думает об этом в portarit-представлении, и изменения ориентации не распространяются на контроллер splitview. Может кто-нибудь помочь мне решить эту проблему.

То, что я сделал до сих пор:

Я попытался явно вызвать -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration с обновленной ориентацией на DetailView, но это не сработало.

Я сбрасываю контроллер корневого каталога приложения на тот же экземпляр экземпляра splitviewcontroller, созданный в - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions, надеясь, что это может служить обновлением, но оно не учитывалось.

Я не знаю, с чего начать. Важное замечание: я нахожусь на iOS 6.0. Любая помощь очень ценится.

ответ

0

Ну я установил ее, изменив происхождение главного зрения

- (void)showMasterView 
{ 
    if (!self.masterIsVisible) 
    { 
     self.masterIsVisible = YES; 
     NSArray *controllers = self.splitViewController.viewControllers; 
     UIViewController *rootViewController = [controllers objectAtIndex:0]; 

     UIView *rootView = rootViewController.view; 
     CGRect rootFrame = rootView.frame; 
     rootFrame.origin.x += rootFrame.size.width; 

     [UIView beginAnimations:@"showView" context:NULL]; 
     rootView.frame = rootFrame; 
     [UIView commitAnimations]; 
    } 
} 

- (void)hideMasterView 
{ 
    if (self.masterIsVisible) 
    { 
     self.masterIsVisible = NO; 
     NSArray *controllers = self.splitViewController.viewControllers; 
     UIViewController *rootViewController = [controllers objectAtIndex:0]; 

     UIView *rootView = rootViewController.view; 
     CGRect rootFrame = rootView.frame; 
     rootFrame.origin.x -= rootFrame.size.width; 

     [UIView beginAnimations:@"hideView" context:NULL]; 
     rootView.frame = rootFrame; 
     [UIView commitAnimations]; 
    } 
} 

Это будет происходить только в портретном режиме. Thanks to....

PS: Искренние извинения за то, что вы не опубликовали этот ответ ранее. Я полностью забыл об этом после того, как проблема была решена. Исправление моей ошибки сейчас :)

Смежные вопросы