- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序中有一个 TabView,用于显示四个屏幕。两者相似但具有不同的数据源。如果我单击第一个选项卡 (EventsScreen),然后单击第三个选项卡 (MyBagScreen),则一切正常。如果我单击第一个选项卡 (EventsScreen),然后单击第二个选项卡 (EventsScreen),它只会加载一个空白屏幕(我认为它只是加载背景)。它们是两个不同的对象,为什么这不起作用?
AppView.swift
struct AppView: View {
var body: some View {
TabView {
EventsScreen().environmentObject(EventsViewModel(repo: IncentivesRespository()))
.tabItem {
Text("Barter")
Image("icon_barter")
}
EventsScreen().environmentObject(EventsViewModel(repo: OpportunityRepository()))
.tabItem {
Text("Earn")
Image("icon_earn")
}
MyBagScreen().environmentObject(MyBagViewModel())
.tabItem{
Text("My Bag")
Image("icon_bag")
}
AccountScreen().environmentObject(AccountViewModel())
.tabItem {
Text("Account")
Image("icon_account")
}
}
.onAppear(perform: {
UITabBar.appearance().backgroundColor = .black
})
.navigationBarHidden(true)
}
}
struct EventsScreen: View {
@EnvironmentObject
var viewModel: EventsViewModel
let calendarManager = RKManager(calendar: Calendar.current, minimumDate: Date(), maximumDate: Date().addingTimeInterval(60*60*24*90), mode: 1)
@State
var currentPage: Int = 0
@State
private var searchTerm : String = ""
init() {
UITableView.appearance().separatorStyle = .none
}
var body: some View {
GeometryReader { geometry in
List {
ZStack(alignment: .top) {
EventViewController(controllers: self.viewModel.featureEventControllers, currentPage: self.$currentPage)
VStack {
SearchBar(text: self.$searchTerm)
.padding(EdgeInsets.init(top: 16, leading: 16, bottom: 0, trailing: 16))
HStack {
Spacer()
Chip(text: "Dates", action: {
self.viewModel.showDateSelection.toggle()
})
.sheet(isPresented: self.$viewModel.showDateSelection, onDismiss: {
self.viewModel.onDatesSelected(startDate: self.calendarManager.startDate, endDate: self.calendarManager.endDate)
}, content: {
RKViewController(isPresented: self.$viewModel.showDateSelection, rkManager: self.calendarManager)
})
Chip(text:"Type", action: {
self.viewModel.showTypeSelection.toggle()
})
Chip(text: "Points", action: {
self.viewModel.showPointsSelection.toggle()
})
Spacer()
}
}
}.listRowInsets(EdgeInsets())
.frame(height: 600)
ForEach(self.viewModel.eventSections.indices) { id in
EventSectionView(eventSection: self.viewModel.eventSections[id])
}
.listRowBackground(Color.black)
}
.navigationBarTitle(Text("Events"), displayMode: .inline)
.navigationBarHidden(true)
if self.viewModel.showPointsSelection {
EventsPointsRangeBottomSheet(isOpen: self.$viewModel.showPointsSelection, selectedRange: self.$viewModel.selectedRange, range: 0.0...self.viewModel.maxPoints, action: {
self.viewModel.onPointsSelected()
})
}
if self.viewModel.showTypeSelection {
TypeBottomSheet(categories: self.viewModel.allCategories, isOpen: self.$viewModel.showTypeSelection, selectedCategoryUuids: self.$viewModel.selectedCategoryUuids, action: {
self.viewModel.onTypesSelected()
})
}
}
}
}
最佳答案
你的代码快照是不可测试的,所以只是一个想法——你必须自己测试它。
因此,假设您的第二个 View 的环境对象是正确的,请尝试使用 .id
使这些 View 真正独特。修饰符,如下
TabView {
EventsScreen().environmentObject(EventsViewModel(repo: IncentivesRespository()))
.id(1) // << here !!
.tabItem {
Text("Barter")
Image("icon_barter")
}
EventsScreen().environmentObject(EventsViewModel(repo: OpportunityRepository()))
.id(2) // << here !!
.tabItem {
Text("Earn")
Image("icon_earn")
}
...
.navigationBarHidden(true)
在
AppView
- 如果这意味着您要包含
TabView
进入
NavigationView
,然后
不要那样做 - 你不会让它工作的。 TabView 被设计为
仅根 View .如果您需要导航,请将其放置在选项卡内。
关于ios - 如果两个 View 相同,为什么 TabView 显示空白屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60793465/
我在那个 tab view 里面有一个 tab view,在那个 tab view` 里面有另一个 tab view,还有一个警告框。当我尝试打开它时,我的应用程序被强制关闭。 但同样的 AlertD
在 SwiftUI 中,TabView 必须是 Root View 。因此,您不能使用 NavigationLink 导航到 TabView。比如说我的应用程序中有四个屏幕。 屏幕 A 是一个包含屏幕
我有这门课: class PageViewModel:ObservableObject { @Published var cars = [Car]() func delete(_ ca
有没有办法在 TabView 中禁用透明度为 iOS 15 ?如果我的 List没有填满整个屏幕 TabView背景是透明的,我希望始终显示 TabView背景。 最佳答案 感谢@Asperi 为我指
我目前在我的应用程序上面临 pb。我想为由 SwiftUI TabView 控制的项目的插入和删除设置动画。 这是我能想到的最简单的重现问题的 View struct ContentView: Vie
我有一个 TabView SwiftUI 中有两个标签生命周期应用,其中一个具有复杂的 View 结构:NavigationView里面有很多 subview ,即:NavigationLink s
我认为我错过了一些简单的东西,但我无法弄清楚它到底是什么。 我正在尝试使用 UITabViewController 设置一个应用程序,其中一个选项卡将具有 UITableView 和 UISearch
我正在使用 TabVIew,我有两个问题: 1.如何去除 TabView 标题的边框底部? 2. 如何在 TabView 标题中的项目之间添加分隔符? 谢谢, 陈 最佳答案 您既不能删除底部颜色,也不
我有一个简单的 TabView: TabView { NavigationView { VStack { NavigationLink(destinat
我创建了一个带有多个选项卡的应用程序,每个选项卡都有一个 webview。 我的网页 View : struct WebView : UIViewRepresentable { let req
我想创建一个 Activity,它在顶部有一个标题,在它下面有一个 TabHost。这是我的 XML 文件中的内容
我刚刚开始使用 Nativescript,所有这些工作给我留下了深刻的印象! 作为将 VueJS Web 应用程序迁移到移动设备的项目的一部分,我正在尝试使用 tabview 并理解这一点。我似乎无法
我在 TabView 类中有这段代码: package jungle.timer; import com.example.jungletimer.R; import android.os.Bundle
我想在运行时在 android 中单击该选项卡来更改选项卡 View 。 当我在“收藏夹”选项卡中单击时,此选项卡图像会自动像“主页”选项卡一样。 请帮助我。 像这样之前 之后 请举例... 提前致谢
我需要使用 java 代码在运行时创建选项卡 View 。 注意: 不使用 xml 设计 最佳答案 在 XML 中创建 TabHost、TabWidget,然后在运行时添加 TAbHost.TabSp
我正在尝试在操作栏中创建一个自定义选项卡 View ,如下所示: 我得到了这个观点: 我想改变 tabviews 指示器的背景,这样背景颜色就变得不可见,我们在选定的 tabview 指示器下有一条绿
我可以在工具栏中创建选项卡 View ,就像应用程序照片 (Yosemite) 一样吗?我只想要一个分段按钮,没有图像。我尝试将 TabView Controller 的样式设置为“工具栏”,但它也会
我想使用 PrimeFaces TabView 组件在选项卡中显示来 self 们服务器的数据。我需要三个选项卡来显示具有不同数据的三个表。 如果我这样写就可以了: // logic
我已经完全改变了我的代码。但是事件索引仍然显示出问题。有时它会被调用,有时它不会。 下面的 xhtml 代码有什么问题? Admin Panel
SwiftUI 中的 View 默认具有透明背景。这通常意味着它们具有白色背景,因为这是您应用的默认背景颜色。但是,这也意味着您可以使用 ZStack更改整个应用程序的背景颜色,除非您明确设置自己的背
我是一名优秀的程序员,十分优秀!