Getting Large Titles on WatchOS with a Navigation Stack

On my Watch app pre-WatchOS 9 I had code as follows: `

TabView {
    NavigationView {
        TodayView(model: delegate.model)
            .navigationBarTitleDisplayMode(.large)
     }
    NavigationView {
        SettingsView(model: delegate.model)
    }
}
.tabViewStyle(.page)

However, for WatchOS 9 I'm using the new NavigationStack like this: `

NavigationStack {
    TabView {
        TodayView(model: delegate.model)
            .navigationBarTitleDisplayMode(.large)

The issue is, with WatchOS 9 the title always displays as .inline and never large. I've tried embedding a list or scroll view. I've also tried placing a navigationView within the NavigationStack and TabView, that just makes duplicate titles.

So, using the NavigationStack with a TabView on WatchOS 9, how do you get large titles?

Thanks

Replies

From your example, you changed the navigation hierarchy of your app. Previously, you had a TabView where every tab was a NavigationView. Now you have a NavigationStack with a TabView as the root. When embedded in a single NavigationStack, TabView enforces an inline title.

If you instead have

TabView {
    NavigationStack {}
    NavigationStack {}
    NavigationStack {}
}

You’ll be able to set a large title on each NavigationStack.

Unfortunately this doesn't work for me though as it introduces another issue.

If I go with the layout you suggested, any NavigationLinks I have within the NavigationStacks do not hide the Tab View indicator "dots" when opening. This is not the behaviour I'm after.

So if I have - NavigationStack{ TabView{ View{ NavigationLink - This works in terms of correctly displaying the NavigationLinks with the new view hiding the indicators, but I loose the large titles.

If I have - TabView{ NavigationStack{ View{ NavigationLink - The Large titles display correctly but the indicators are still there after selecting the navigation link.

Is this all expected behaviour or is there a bug I need to submit? Or is there some other combination of elements to try that gets me all the behaviour I'm after? Thanks

Any further suggestions? All issues still present in WatchOS 9.4 & iOS 16.4