Можно ли добавить контроллер табличного представления в часть контроллера представления? - PullRequest
0 голосов
/ 21 марта 2019

Скажем, у меня есть UITableViewController , который в основном можно использовать повторно, и его следует использовать из многих UIViewController с, но он должен охватывать только часть общего представления (например, 90% от общей высоты). Обычно я делаю это с помощью навигации, но если я хочу, чтобы верхние 10% UIViewController были видимыми, и показывал UITableViewController для оставшихся 90%, это возможно, и если да, то как это сделать?

Ответы [ 2 ]

0 голосов
/ 21 марта 2019

Да.Контроллер большого представления является контроллером представления контейнера, а контроллер малого представления (в данном случае контроллер представления таблицы) является контроллером дочернего представления.Мы можем добавить или удалить дочерний контроллер представления в контроллере представления контейнера.

Добавить дочерний контроллер представления в контейнер

- (void)displayContentController:(UIViewController *)content {
   [self addChildViewController:content];
   content.view.frame = [self frameForContentController];
   [self.view addSubview:self.currentClientView];
   [content didMoveToParentViewController:self];
}

Удалить дочерний контроллер представления из контейнера

- (void)hideContentController:(UIViewController *)content {
   [content willMoveToParentViewController:nil];
   [content.view removeFromSuperview];
   [content removeFromParentViewController];
}

Мы также можем удалить старый дочерний контроллер представления и одновременно добавить новый дочерний контроллер представления.Вот пример кода (с анимацией).

- (void)cycleFromViewController:(UIViewController *)oldVC
               toViewController:(UIViewController *)newVC {
   // Prepare the two view controllers for the change.
   [oldVC willMoveToParentViewController:nil];
   [self addChildViewController:newVC];

   // Get the start frame of the new view controller and the end frame
   // for the old view controller. Both rectangles are offscreen.
   newVC.view.frame = [self newViewStartFrame];
   CGRect endFrame = [self oldViewEndFrame];

   // Queue up the transition animation.
   [self transitionFromViewController:oldVC toViewController:newVC
        duration:0.25 options:0
        animations:^{
            // Animate the views to their final positions.
            newVC.view.frame = oldVC.view.frame;
            oldVC.view.frame = endFrame;
        }
        completion:^(BOOL finished) {
           // Remove the old view controller and send the final
           // notification to the new view controller.
           [oldVC removeFromParentViewController];
           [newVC didMoveToParentViewController:self];
        }];
}
0 голосов
/ 21 марта 2019

Да, вы можете.Просто добавьте UITableViewController в качестве дочернего контроллера в родительский UIViewController.

Кроме того, вы можете прочитать об этом здесь Документация Apple

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...