UISplitViewController embedded in UITabBarController behaves strange in iOS 14

Viewed 220

As the title says, I have a UISplitViewController embedded in a UITabBarController and I set the displayMode property of the UISplitViewController to allVisible. But in a horizontally regular interface in iOS 14, the UISplitViewController only displays one view controller. Everything goes fine in Xcode 12 beta 2 but not in Xcode 12 beta 3 and beta 4.

Screenshot runs on Xcode 12 beta 3 and beta 4
Screenshot runs on Xcode 12 beta 2

1 Answers

I reported this to Apple a couple of weeks ago in Feedback Assistant and the "resolution", without any additional comment, was that this is the intended behaviour. Based on remarks in a couple of the WWDC20 videos, I can only guess that this is their way of getting as many apps as possible to use side bars over tab bars for root navigation.

To get around this problem on iOS 14 you can either:

  • change your UI to use a side bar instead of a tab bar, or

  • continue using the "classic" (i.e. pre-iOS 14) split views instead of the new "column-based" ones, which is done by initialising the split view controller with any initialiser except init(style:). This means, of course, that you won't be able to use any of the new split view API.

Related