在iOS13上将UINavigationController用作UISplitViewController的子级时未调用ViewDidLoad和WillHideViewController

在iOS13上将UINavigationController用作UISplitViewController的子级时未调用ViewDidLoad和WillHideViewController,ios,uisplitviewcontroller,ios13,Ios,Uisplitviewcontroller,Ios13,我有一个带有UISplitViewController作为根视图的应用程序,但对于此视图的子级,我使用UINavigationController。 虽然主视图和详细视图是UIViewController,但在设置为uiplitviewcontroller的子视图之前,我将其添加到了UINavigationController,之所以这样做,是因为我需要Title和UIBarButton,还因为我对iPad和iPhone共享此视图 下面是我的代码片段: MasterView _masterVie

我有一个带有
UISplitViewController
作为根视图的应用程序,但对于此视图的子级,我使用
UINavigationController
。 虽然主视图和详细视图是
UIViewController
,但在设置为
uiplitviewcontroller
的子视图之前,我将其添加到了
UINavigationController
,之所以这样做,是因为我需要
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上运行时,
\u masterView
ViewDidLoad
没有被调用。虽然用户在
\u detailView
上进行更改时,
\u masterView
上的图像视图未显示,但我需要此选项来更改
\u masterView
上的图像视图

另外,
willihidevewcontroller
未被调用,而我需要在
\u detailView
上添加
UIBarButtonItem
以显示和隐藏
\u masterView


您能帮我找到解决方案吗?

使用IB的iOS 13分割视图控制器的问题。如果您将导航控制器嵌入到主/详细视图控制器中,它只加载导航控制器

要解决此问题,请从UISplitViewController创建一个自定义类,并将其分配给情节提要中的splitviewcontroller,然后以编程方式将导航控制器和masterViewcontroller添加到该UISplitViewController。这将正确加载您的视图。此代码将出现在UISplitviewcontroller类的viewdidload或WillDisplay中。 示例代码。在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之后也有类似的问题。希望对你有所帮助