在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之后也有类似的问题。希望对你有所帮助