2

У нас есть пользовательский вид, который выглядит как панель, но в конечном итоге является подклассом UIView.Сохранять пользовательское состояние отображения табуляции между контроллерами вида

Вид показан как вкладка в нижней части UIViewController. Когда изображение коснется контроллера вида, мы переходим к другому контроллеру представления.

Второй контроллер представления имеет тот же поддельный вид табуляции, который показан внизу. Пользователь может закрыть второй контроллер просмотра, и он вернется к первому.

Каков наилучший способ сохранить один и тот же вид и его состояние для обоих контроллеров? Например, часть поддельной вкладки может быть удобной кнопкой с значком значка, показывающим (2). Если это коснется, оно будет уменьшаться до (1). Это необходимо отразить в обоих случаях представления.

Правильно ли будет использоваться только prepareForSegue и продолжать обновлять состояние представления или передавать экземпляр представлений? Или есть лучший подход?

ответ

2

Я думаю, что лучший подход - реализовать что-то подобное с собственной панелью вкладок. Вы можете добиться этого, выполнив container view. Как вы это делаете, это долгая история для публикации здесь, но в Интернете есть много ресурсов. В принципе, у вас будет одна и та же фальшивая панель, и ваш контроллер просмотра будет показан в виде контейнера, который должен быть расположен над панелью вкладок. Контроллер представления с видом контейнера и панель вкладок должен управлять переходами и обновлять панель.

+1

Забавно, что это был единственный подход, о котором я мог думать, используя контейнерный вид. Посмотрите, есть ли какие-либо другие предложения по – StuartM

1

Да, точно так же, как Джелли сказал, что я иду по маршруту управления родительским/дочерним видом, с помощью панели вкладок, управляющей добавлением/удалением контроллеров представления и связанных с ними представлений в ответ на события касания.

1

Я работаю над тем же scenerio. В UIViewController сделайте свой вид tabBar внизу и выше, чтобы сделать пустой UIView. Теперь по нажатию кнопки TabBar, добавлять и удалять вид вашего нового ViewController, используя AutoLayout вроде как -

#pragma mark - TAB BAR METHODS 

-(void)setSelecedView:(VIEWSELECTION)selecedView 
{ 
    [self RemoveChildViewControllers ]; 
    switch (selecedView) 
    { 
     case VIEWSELECTION_HOME: 
     { 
      HomeViewController *homeVC = [[HomeViewController alloc]initWithNibName:@"HomeViewController" bundle:nil]; 
      [email protected]"Wellborn Company App"; 
      [self displayContentController:homeVC OnView:self.DumpingView]; 
     } 
      break; 
     case VIEWSELECTION_SEARCH: 
     { 
      SearchViewController *searchVC = [[SearchViewController alloc]initWithNibName:@"SearchViewController" bundle:nil]; 
      [email protected]"Search"; 
      [self displayContentController:searchVC OnView:self.DumpingView]; 
     } 
      break; 
}} 

#pragma mark - VC Adding/Removing Methods 

- (void)RemoveChildViewControllers 
{ 
    NSArray *childVCArray = [self childViewControllers]; 

    for (__strong UIViewController *childvc in childVCArray) 
    { 
     [childvc willMoveToParentViewController:nil]; 
     [childvc.view removeFromSuperview]; 
     [childvc removeFromParentViewController]; 
    } 
} 

- (void)displayContentController:(UIViewController*) content OnView:(UIView*)parentView 
{ 
    [self addChildViewController:content]; 
    [parentView addSubview:content.view]; 

    NSDictionary *views = @{ 
          @"childView" : content.view, 

          }; 
    NSArray *arr; 

    [content.view setTranslatesAutoresizingMaskIntoConstraints:NO]; 

    arr = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[childView]-0-|" options:0 metrics:nil views:views]; 
    [parentView addConstraints:arr]; 

    arr = [NSLayoutConstraint constraintsWithVisualFormat:@"|-0-[childView]-0-|" options:0 metrics:nil views:views]; 
    [parentView addConstraints:arr];  
    [content didMoveToParentViewController:self]; 
} 
1

Если это просто вид и ваши просто нажав контроллеры отображения на панели навигации, а затем добавить ваш взгляд на вашу навигацию просмотра контроллеров.

[self.navigationController.view addSubview:view]; 
Смежные вопросы