ViewDidLoad и WillHideViewController не вызывается при использовании UINavigationController в качестве дочернего элемента UISplitViewController на iOS13 - PullRequest
0 голосов
/ 15 октября 2019

У меня есть приложения с UISplitViewController в качестве Root View, но для детей этого вида я использую UINavigationController. Хотя Master и Detail View равен UIViewController, но я добавил это к UINavigationController, прежде чем установить в качестве дочернего элемента UISplitViewController, я сделал это, потому что мне нужны Title и UIBarButton, а также потому, что я разделяю это представление дляiPad и iPhone.

Вот фрагмент моего кода:

MasterView _masterView = new MasterView;
UINavigationController _masterViewNavigation = new UINavigationController(_masterView);

DetailView _detailView = new DetailView;
UINavigationController _detailView Navigation = new UINavigationController(_detailView);

_splitView.ViewController = new UIViewController[]{_masterView, _detailView};

Все работало до iOS 13. Но когда я работал на iOS 13, ViewDidLoad из _masterView не былоне звонил. Хотя мне нужно это, чтобы изменить представление изображения на _masterView, когда пользователь вносит изменения на _detailView, хотя _masterView не отображается.

Также WillHideViewController не вызывается, а мне нужно это добавить UIBarButtonItem на _detailView, чтобы показать и скрыть _masterView.

Можете ли вы помочь мне найти решение?

1 Ответ

0 голосов
/ 18 октября 2019

Проблема с iOS 13 Контроллер с разделенным видом с использованием IB. Если у вас есть контроллер навигации, встроенный в контроллер вида Master / Detail, он просто загружает контроллер навигации.

Чтобы устранить эту проблему, создайте пользовательский класс из UISplitViewController и назначьте его вашему splitviewcontroller в раскадровке и программно добавьте контроллер навигации и masterViewcontrollerк этому UISplitViewController. Это должно загрузить ваш взгляд правильно. Этот код входит в viewdidload или willappear класса UISplitviewcontroller. Образец кода. в Obj c

    MasterViewController *master = [[MasterViewController alloc] init];
    UINavigationController *tableViewNavigationController = [[UINavigationController alloc] initWithRootViewController:master];
    UINavigationController *navC = [[UINavigationController alloc] init];
    self.viewControllers = [NSArray arrayWithObjects:tableViewNavigationController,navC, nil];

Это исправило мою проблему, была аналогичная проблема после iOS13. Надеюсь, что это поможет!

...