Skip to content

The not-so-obvious UISplitViewController warning

Published:
1 min read

If you’re using UISplitViewController in your app and mostly (if not completely) building your view controller hierarchy in code instead of adding view controllers to it in storyboard, you may have seen this warning:

[Warning] Splitview controller <UISplitViewControllerClassicImpl: 0x7fd5fae07c00> is expected to have a view controller at index 0 before it's used!At first I didn’t pay attention to this warning as my app was already working as I expected. But then, as always, it just annoyed me. After a quick research on what would be causing this I came across to this StackOverflow answer.

So in my case I was doing the following:

splitViewController.preferredDisplayMode = .allVisible splitViewController.viewControllers = […]Probably, setting the preferredDisplayMode is triggering the view to be loaded and since we don’t have any view controllers assigned, it’s just printing the above warning to the console.

The solution is simple. Just assign the view controllers first and later do whatever you need to do with split view controller. 😁

splitViewController.viewControllers = […] splitViewController.preferredDisplayMode = .allVisible // any further customizations

New posts, shipping stories, and nerdy links straight to your inbox.

2× per month, pure signal, zero fluff.


Edit on GitHub
Share this post on: