UISplitViewController and iOS14

I have been working to update a storyboard-based iOS app to run on iOS13+ and iOS14 (on both iPad and iPhone). While the new features appear to be very nice, there are some braking behavior changes that have been introduced, particularly with respect to iPhone. I'll list the major ones I've seen below.

My Question: are there any available workarounds? Or am I simply observing bugs in the Simulator and/or SDK from Xcode 12 beta 3?

Breaking Changes:
  1. On iPhone, using .primary and .secondary columns, I have found no way to force the controller to display the .master column initially. (I tried lots of things; details on request.)

  2. So, I thought to assign the .compact viewController to the .primary controller. But that doesn't work because the .compact viewController ignores "show-detail" segues. (Unlike previous behavior, they are NOT simply translated into push segues.)

Originally, one purpose of the UISplitViewController was to provide a "smart" interface that would work on both iPad and iPhone, so that the application needn't be written twice. It appears that iOS14 has broken with this idea.

Am I seeing bugs? (If so, I'll happily provide feedback.) Or do I actually have to engineer iPhone-specific code?

Accepted Reply

Here is my solution:
(1) Using Xcode 12 beta 5, in IB, I set the properties of the split-view controller to be:
  • Display Mode: Two Columns Beside

  • Behavior: Tiled (<== this is important)

Then I use the following code for the view controller:


It seems like the key to making this work was to change the behavior from "Automatic" to "Tiled".


Replies

Same exact issue.
Same also here.

What I personally would like is to be able to specify in the storyboards that I want to use the classic system for split view controllers and not the new columns based system.
I have the same issue. I'm looking into the split delegate method: optional func splitViewController(_ svc: UISplitViewController,  topColumnForCollapsingToProposedTopColumn proposedTopColumn: UISplitViewController.Column) -> UISplitViewController.Column
I had the same issue and I found a solution. You can see it following this link: https://developer.apple.com/forums/thread/656014
Here is my solution:
(1) Using Xcode 12 beta 5, in IB, I set the properties of the split-view controller to be:
  • Display Mode: Two Columns Beside

  • Behavior: Tiled (<== this is important)

Then I use the following code for the view controller:


It seems like the key to making this work was to change the behavior from "Automatic" to "Tiled".