Skip to content

Repository files navigation

AdaptiveTabView

An adaptive SwiftUI container that switches between TabView and NavigationSplitView based on horiontal size class. This framework allows you to easily build iPhone and iPad apps that conform to Apple's Human Interface Guidelines.

iPhoneiPad
Preview iPhonePreview iPad

Here's an example of how it can be used:

@mainstructMyApp:App{@StateprivatevarselectedTab=MyFirstTab.identifier
@StateprivatevarcolumnVisibility:NavigationSplitViewVisibility=.doubleColumn
varbody:someScene{WindowGroup{AdaptiveTabView(
appName:"My App", selectedTab: selectedTab
){MyFirstTab()MySecondTab()MyThirdTab()} defaultContent:{MyDefaultContentView()} defaultDetail:{MyDefaultDetailView()} sidebarExtraContent:{Section{ForEach(folders){(folder)inFolderSidebarCell(folder)}}}.selectedTabTransformer(transformer)}}lettransformer=SelectedTabTransformer{(kind, tabIdentifier)inswitch kind {case.tabView:letsharedTabViewIdentifiers=[MyFirstTab.identifier,MySecondTab.identifier,MyThirdTab.identifier
]if !sharedTabViewIdentifiers.contains(tabIdentifier){returnMyFirstTab.identifier
}case.sidebarView:break}return tabIdentifier
}}
extensionMyFirstTab{staticletidentifier=TabIdentifier("MyFirstTab")}structMyFirstTab:View,TitleImageProviding{lettitle="My First Tab"letsystemImageName="1.square"letid=MyFirstTab.identifier
varbody:someView{...}}

About

An adaptive SwiftUI TabView that switches between TabView and NavigationSplitView.

Resources

Stars

25 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages