I am not sure what In the code I need to chnage to make the build successful. Here is the code:
import SwiftUI
enum Tab {
case home,message,calender,profile
}
struct TabBarItem: View {
let selectedImage: String
let unSelectedImage: String
let isSelected: Bool
let action: () -> Void
var body: some View {
Button(action: action) {
VStack {
Image(isSelected ? selectedImage : unSelectedImage )
}
}
.foregroundColor(isSelected ? Theme.primaryColor : .secondary)
.frame(maxWidth: .infinity)
}
}
struct TabView: View {
@Binding var tabIdx: Tab
var body: some View {
HStack {
Spacer()
TabBarItem(selectedImage: "ic_selected_home", unSelectedImage: "ic_unselected_home", isSelected: tabIdx == .home) {
self.tabIdx = .home
}
Spacer()
TabBarItem(selectedImage: "ic_selected_message", unSelectedImage: "ic_unselected_message", isSelected: tabIdx == .message) {
self.tabIdx = .message
}
Spacer()
TabBarItem(selectedImage: "ic_selected_calendar", unSelectedImage: "ic_unselected_calendar", isSelected: tabIdx == .calender) {
self.tabIdx = .calender
}
Spacer()
TabBarItem(selectedImage: "ic_selected_profile", unSelectedImage: "ic_unselected_profile", isSelected: tabIdx == .profile) {
self.tabIdx = .profile
}
Spacer()
}
.padding(.bottom, 30)
.frame(height: 80)
.background(
Rectangle()
.fill(Color.white)
.shadow(
color: Color.gray.opacity(0.2),
radius: 15,
x: 0,
y: 0
)
)
}
}
struct BottomTabBar: View {
@State var tabIdx: Tab = .home
var body: some View {
ZStack {
VStack(spacing: 0) {
switch tabIdx {
case .home:
HomeHeader_Previews() *This is where the error comes up*
case .message:
MessageHistoryView()
case .calender:
ScheduleView()
case .profile:
ProfileView()
}
TabView(tabIdx: self.$tabIdx)
}//:VStack
.ignoresSafeArea(.all)
}
}
}
struct BottomTabBar_Previews: PreviewProvider {
static var previews: some View {
BottomTabBar()
}
}
The build was working when Xcode was on iOS 14 but I guess because it's iOS 15 something needs to be changed? If you can help would be greatly appreciated. I don't know what more I need to change to make the code work or maybe if I should change it back to iOS 14 but I don't know how.
In your
BottomTabBarI assumeHomeHeader_Previews()is aPreviewProvider.Don't put a
PreviewProviderinside a View body, use only other Views. This is the reason for your error.PreviewProvideris just to provide preview for Xcode.Try using the view, such as
HomeHeader()in yourBottomTabBar