2015-06-02 3 views
0

UIsplitViewController не может pushViewController, только master view или только detail view может pushViewController внутри это вид. Я не буду нажимать новое представление в текущем UIsplitViewController. UIsplitViewController находится в UITabBarController.self.splitViewController.navigationController pushViewController не может работать

Как это решить?

+1

Для перемещения между диспетчерами просмотра требуется NavigationController. Вы можете настроить контроллер splitview как rootviewcontroller на Navigationcontroller и установить этот контроллер навигации в Tabbarcontroller. Также управляйте навигационной панелью show/hide, если вы этого не требуете. – Samir

+0

@Samir Я не могу установить splitviewcontroller на Navigationcontroller. Как это сделать? – Gank

+1

Если вы используете диспетчер навигации Storyboard Take Navigation. Удалите его диспетчер представлений по умолчанию. И установите Splitviewcontroller в качестве контроллера rootview ControlContr. – Samir

ответ

0
 self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden; 
     [MLTool pushView:self newView:USER_VIEW]; 

    +(id)pushView:(UIViewController*)view newView:(NSString*)newView{ 
     UIViewController *svc = [view.storyboard instantiateViewControllerWithIdentifier:newView]; 
     //NSAssert(svc, @"pushView nil"); 
     [view.navigationController pushViewController:svc animated:YES]; 
     return svc; 
    } 

- (void)viewWillAppear:(BOOL)animated{ 
    SplitProductView* split=(SplitProductView*)self.splitViewController; 
    [split resetSplit: [[UIApplication sharedApplication] statusBarOrientation]]; 

    //self.splitViewController.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryOverlay 
} 

-(void)resetSplit :(UIInterfaceOrientation)toInterfaceOrientation { 
    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0) 
    { 
     //TODOX:iphone 
     if (isPad) 
     { 
      if(UIInterfaceOrientationIsPortrait(toInterfaceOrientation)){ 
       self.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryOverlay; 
      } 
      else{ 
       //if (self.displayMode == UISplitViewControllerDisplayModePrimaryOverlay) 
       {//ios的bug,必须这三行,不然左边有黑边 

        // if (SYSTEM_VERSION_MORE_THAN(@"8.0")) 
        { 
         self.preferredDisplayMode = UISplitViewControllerDisplayModePrimaryHidden; 
         self.preferredDisplayMode = UISplitViewControllerDisplayModeAllVisible; 
         self.preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic; 
        } 


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