`TabView` and `tabViewStyle(.page)` not navigating as expected

I've been experimenting with TabView and tabViewStyle and I've run into a problem with my code I can't figure out.

In the code below, when the app opens up on my device I start on the HomeScreen() (as expected) but if I tap on Profile in the top bar, the tab navigation doesn't happen. The Profile text turns red (indicating that pageIndex has been updated), but for reasons I can't figure out, the TabView isn't updating accordingly.

BUT, if I open the app and tap on Settings in the top bar, the tab navigation happens as expected.

Swiping works as expected, no issues there.

Have I missed something obvious?

import SwiftUI

struct SwipeNavigation2: View {
    @State var pageIndex = 1
    
    var body: some View {
        NavigationView {
            TabView(selection: self.$pageIndex) {
                // The screen to the "left" of the Home screen
                ProfileScreen()
                    .tag(0)
                
                // The screen we want the app to load on
                HomeScreen()
                    .tag(1)
                
                // The screen to the "right" of the Home screen
                SettingsScreen()
                    .tag(2)
            }
            .tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
            .navigationTitle("")
            .navigationBarTitleDisplayMode(.inline)
            .toolbar {
                ToolbarItem(placement: .navigationBarLeading) {
                    Button {
                        withAnimation(.spring()) {
                            pageIndex = 0
                        }
                    } label: {
                        Text("Profile")
                            .foregroundColor(pageIndex == 0 ? .red : .primary)
                    }
                }
                ToolbarItem(placement: .navigationBarTrailing) {
                    Button {
                        withAnimation(.spring()) {
                            pageIndex = 2
                        }
                    } label: {
                        Text("Settings")
                            .foregroundColor(pageIndex == 2 ? .red : .primary)
                    }
                }
            }
        }
    }
}

private struct ProfileScreen: View {
    var body: some View {
        Text("Profile screen")
    }
}

private struct HomeScreen: View {
    var body: some View {
        Text("Home screen")
    }
}

private struct SettingsScreen: View {
    var body: some View {
        Text("Settings screen")
    }
}

As a follow-up, setting pageIndex to 0 and using onAppear to set it to 1 isn't working either, the behaviour is identical.

`TabView` and `tabViewStyle(.page)` not navigating as expected
 
 
Q