feat: Implement correct iOS 18 Tab API syntax
- Use Tab(title, systemImage:) without value parameter as per iOS 18 standards - Remove manual selection handling as TabView handles it automatically - Simplify ForEach to iterate directly over tabs instead of enumeration - Remove .tag() and .tabItem modifiers which are no longer needed - Clean up selection state management for modern Tab API
This commit is contained in:
parent
a651398dca
commit
f3d52b3c3a
@ -12,7 +12,7 @@ struct PhoneTabView: View {
|
|||||||
private let moreTabs: [SidebarTab] = [.search, .article, .videos, .pictures, .tags, .settings]
|
private let moreTabs: [SidebarTab] = [.search, .article, .videos, .pictures, .tags, .settings]
|
||||||
|
|
||||||
@State private var selectedMoreTab: SidebarTab? = nil
|
@State private var selectedMoreTab: SidebarTab? = nil
|
||||||
@State private var selectedTabIndex: Int = 1
|
@State private var selectedTab: SidebarTab = .unread
|
||||||
@State private var offlineBookmarksViewModel = OfflineBookmarksViewModel(syncUseCase: DefaultUseCaseFactory.shared.makeOfflineBookmarkSyncUseCase())
|
@State private var offlineBookmarksViewModel = OfflineBookmarksViewModel(syncUseCase: DefaultUseCaseFactory.shared.makeOfflineBookmarkSyncUseCase())
|
||||||
|
|
||||||
@EnvironmentObject var appSettings: AppSettings
|
@EnvironmentObject var appSettings: AppSettings
|
||||||
@ -20,7 +20,7 @@ struct PhoneTabView: View {
|
|||||||
var body: some View {
|
var body: some View {
|
||||||
NavigationStack {
|
NavigationStack {
|
||||||
GlobalPlayerContainerView {
|
GlobalPlayerContainerView {
|
||||||
TabView(selection: $selectedTabIndex) {
|
TabView {
|
||||||
mainTabsContent
|
mainTabsContent
|
||||||
moreTabContent
|
moreTabContent
|
||||||
}
|
}
|
||||||
@ -33,31 +33,25 @@ struct PhoneTabView: View {
|
|||||||
|
|
||||||
@ViewBuilder
|
@ViewBuilder
|
||||||
private var mainTabsContent: some View {
|
private var mainTabsContent: some View {
|
||||||
ForEach(Array(mainTabs.enumerated()), id: \.element) { idx, tab in
|
ForEach(mainTabs, id: \.self) { tab in
|
||||||
|
Tab(tab.label, systemImage: tab.systemImage) {
|
||||||
tabView(for: tab)
|
tabView(for: tab)
|
||||||
.tabItem {
|
|
||||||
Label(tab.label, systemImage: tab.systemImage)
|
|
||||||
}
|
}
|
||||||
.tag(idx)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ViewBuilder
|
@ViewBuilder
|
||||||
private var moreTabContent: some View {
|
private var moreTabContent: some View {
|
||||||
|
Tab("More", systemImage: "ellipsis") {
|
||||||
VStack(spacing: 0) {
|
VStack(spacing: 0) {
|
||||||
moreTabsList
|
moreTabsList
|
||||||
moreTabsFooter
|
moreTabsFooter
|
||||||
}
|
}
|
||||||
.tabItem {
|
|
||||||
Label("More", systemImage: "ellipsis")
|
|
||||||
}
|
|
||||||
.badge(offlineBookmarksViewModel.state.localBookmarkCount > 0 ? offlineBookmarksViewModel.state.localBookmarkCount : 0)
|
|
||||||
.tag(mainTabs.count)
|
|
||||||
.onAppear {
|
.onAppear {
|
||||||
if selectedTabIndex == mainTabs.count && selectedMoreTab != nil {
|
|
||||||
selectedMoreTab = nil
|
selectedMoreTab = nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.badge(offlineBookmarksViewModel.state.localBookmarkCount > 0 ? offlineBookmarksViewModel.state.localBookmarkCount : 0)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ViewBuilder
|
@ViewBuilder
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user