Изменение кадра дочернего вида при повторном нажатии на родительский контроллер вида - PullRequest
0 голосов
/ 30 июня 2018

Я добавил представление viewcontroller как дочернее представление в другой viewcontroller. Контроллер дочернего представления имеет табличное представление. Дочерний контроллер представления может быть нажат несколько раз, в то время как нажмите didSelectRow, чтобы показать обновленные данные в том же контроллере представления, который работает нормально. Но когда я выталкиваю дочерний контроллер представления из своего родительского представления, дочернее представление меняет свой кадр на исходный кадр viewcontroller и покидает родительское представление. Поэтому я хочу убедиться, что он всегда будет оставаться в кадре родительского представления, а push и pop будут происходить только внутри родительского представления.

Добавление дочернего вида:

 UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Home" bundle:nil];
    ChildViewController *vc = [sb instantiateViewControllerWithIdentifier:@"ChildViewController"];
    [self addChildViewController:vc];
    [vc.view setFrame:self.tableFilters.frame];
    [self.viewContainer addSubview:vc.view];
    [vc didMoveToParentViewController:self];

Код, написанный в методе didSelctRow дочернего viewcontroller:

ChildViewController *newMyTableVC = [self.storyboard instantiateViewControllerWithIdentifier:@"ChildViewController"];
   newMyTableVC.delegate = self;
   [self.tableView reloadData];
   [self.navigationController pushViewController:newMyTableVC animated:YES];

1 Ответ

0 голосов
/ 30 июня 2018

Поскольку ваш дочерний контроллер представления не встроен в экземпляр UINavigationController self.navigationController, он указывает на навигационный контроллер его родителя. Вот почему нажатие и извлечение происходит в родительском контроллере представления.

Чтобы заставить нажатия и выталкивание работать в вашем контроллере дочернего вида, вы должны встроить дочерний контроллер вида в UINavigationController:

UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Home" bundle:nil];
ChildViewController *vc = [sb instantiateViewControllerWithIdentifier:@"ChildViewController"];
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:vc];
[self addChildViewController:nc];
[nc.view setFrame:self.tableFilters.frame];
[self.viewContainer addSubview:nc.view];
[nc didMoveToParentViewController:self];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...