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.
| iPhone | 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{...}}
