- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在选项卡式 View 中有一个 MasterDetailView。如果用户点击 MasterDetailView 并在主视图中选择一个条目,则详细信息将显示在详细信息 View 中。选择另一个选项卡并切换回 MasterDetailView 后,不再选择细节 - MasterDetailView 完全失去其状态,就像完全呈现一样。
private let dateFormatter: DateFormatter = {
let dateFormatter = DateFormatter()
dateFormatter.dateStyle = .medium
dateFormatter.timeStyle = .medium
return dateFormatter
}()
struct MasterDetailView: View {
@State private var dates = [Date]()
var body: some View {
NavigationView {
MasterView(dates: $dates)
.navigationBarTitle(Text("Master"))
.navigationBarItems(
leading: EditButton(),
trailing: Button(
action: {
withAnimation { self.dates.insert(Date(), at: 0) }
}
) {
Image(systemName: "plus")
}
)
DetailView()
}.navigationViewStyle(DoubleColumnNavigationViewStyle())
}
}
struct MasterView: View {
@Binding var dates: [Date]
var body: some View {
List {
ForEach(dates, id: \.self) { date in
NavigationLink(
destination: DetailView(selectedDate: date)
) {
Text("\(date, formatter: dateFormatter)")
}
}.onDelete { indices in
indices.forEach { self.dates.remove(at: $0) }
}
}
}
}
struct DetailView: View {
var selectedDate: Date?
var body: some View {
Group {
if selectedDate != nil {
Text("\(selectedDate!, formatter: dateFormatter)")
} else {
Text("Detail view content goes here")
}
}.navigationBarTitle(Text("Detail"))
}
}
struct ContentView: View {
@State private var selection = 0
var body: some View {
TabView(selection: $selection){
Text("First View")
.font(.title)
.tabItem {
VStack {
Image("first")
Text("First")
}
}
.tag(0)
MasterDetailView()
.tabItem {
VStack {
Image("second")
Text("Master Detail")
}
}
.tag(1)
}
}
}
有没有办法在用户选择该选项卡时“重用”MasterDetailView?
我知道我可以使用@State 和@Binding 来保存和恢复状态(就像主视图中的选定条目),在这个简单的示例中,这可能是一个解决方案。但是在一个复杂的应用程序中——例如,当 MasterDetailView 包含一个很深的 View 层次结构时——管理(保存和恢复) View 的完整状态是没有用的。
最佳答案
这个问题的变体已经被问过好几次了,到目前为止,共识是 SwiftUI 还不支持这个用例。我敢肯定它在他们的雷达上,但是越多的人ask for this feature ,它越有可能被优先用于明年的更新。
这是 an answer有人通过包装 UITabBarController 以与 SwiftUI 一起使用来获得您想要的行为。
关于SwiftUI:选项卡式 View 中的 MasterDetailView 丢失 "State",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58804399/
我正在开发UISplitview基础项目。我有一个关于UISplitview的问题。我想在纵向模式下隐藏其他UIview Controller 类的masterDetailview(LeftSide
我创建了一个名为 CustomeTableViewCell 的自定义类,其中包含代码: @IBOutlet weak var label1: UILabel! @IBOutlet weak var l
我在选项卡式 View 中有一个 MasterDetailView。如果用户点击 MasterDetailView 并在主视图中选择一个条目,则详细信息将显示在详细信息 View 中。选择另一个选项卡
我有 Xcode 4.2,我选择了没有 Storybord 的项目模板 Master Detail View 。那么如何设置导航样式以及应该在哪里添加代码呢?请给我建议。 最佳答案 //set nav
我是一名优秀的程序员,十分优秀!