NavigationSplitView content column renders list in plain style – even on iPhone

Hi everyone,

I’m building an iOS app that originally targeted iPhone using NavigationStack. Now I’m adapting it for iPad and switched to using NavigationSplitView to support a three-column layout.

The structure looks like this:

NavigationSplitView {
    A // Sidebar
} content: {
    B // Middle column – this shows a list
} detail: {
    C // Detail view
}

The issue is with the list shown in view B (the content column). It appears completely unstyled, as if it’s using .listStyle(.plain) — with no background material, no grouped sections, and a very flat look.

I can understand that this might be intentional on iPad to visually distinguish the three columns. However, the problem is that this same unstyled list also appears on iPhone, even though iPhone only shows a single column view at a time!

I tried explicitly setting .listStyle(.insetGrouped) or .listStyle(.grouped) on the list in view B, but it makes no difference.

When I go back to NavigationStack, the list in B is styled properly, just as expected — but then I lose the enhanced iPad layout.

What I’m looking for:

I’d like to keep using NavigationSplitView, but I want the list in the content column (view B) to use the default iOS list styling, at least on iPhone. Is there any way to achieve this?

Thanks!

NavigationSplitView content column renders list in plain style – even on iPhone
 
 
Q