我试图隐藏第三个选项卡上的导航栏,但对于其余选项卡,它应该显示。它在 iOS 14 中工作正常,但在 iOS 15 中修改器随机工作。一旦我开始在选项卡之间切换,导航栏也开始显示在第三个选项卡上。下面是我的 SwiftUI 文件代码
注意:这只是我的应用程序的更复杂代码设置的简单表示。Xcode:12.5.1 设备:XR(iOS 15 beta)
import SwiftUI
struct TestView: View {
@State var selectedTab: TabType = .home
var body: some View {
NavigationView {
TabView(selection: $selectedTab) {
ForEach(TabType.allCases, id: \.self) { tabType in
switch tabType {
case .profile:
ThirdView()
.navigationBarHidden(true)
.tag(tabType)
.tabItem {
Label(tabType.title, systemImage: "plus")
}
default:
SecondView()
.tag(tabType)
.tabItem {
Label(tabType.title, systemImage: "star")
}
}
}
}
}
}
}
struct SecondView: View {
var body: some View { …Run Code Online (Sandbox Code Playgroud) 在视图中的一组主体中显示或隐藏视图时,我试图用 SwiftUI 找出动画。我有这个代码:
var body: some View {
Group {
if isIntroShown {
EAIntroViewContentView()
.transition(AnyTransition.opacity.animation(.easeInOut(duration: 1.0)))
}
if mainhomeMode == .mylists {
MyLists()
.onReceive(publisher) { (payload) in
self.toggleMainView()
}
} else {
CarsHome()
.onReceive(publisher) { (payload) in
self.toggleMainView()
}
}
}.onReceive(publisherIntro) { (payload) in
self.onShowIntroButton()
}
}
Run Code Online (Sandbox Code Playgroud)
当 hidden 时EAIntroView,过渡动画正常工作,但块弹出并mainhomeMode没有动画向上移动到窗口顶部。如何隐藏和显示介绍视图使隐藏/显示事件平滑?
我正在尝试在收到 API 响应后重新加载 tableView。TableView 重新加载不会调用,cellForRowAt因为最初它是用空项目初始化的。我已经添加了复制该问题所需的最少代码。
代码为UIViewRepresentable
import SwiftUI
import UIKit
struct UIListView: UIViewRepresentable {
@Binding var reload: Bool
var items: [String]
private let tableView = UITableView()
func makeUIView(context: Context) -> UITableView {
print("*************** make")
tableView.dataSource = context.coordinator
return tableView
}
func updateUIView(_ uiView: UITableView, context: Context) {
print("*************** update", items.count)
print("********* RELOAD", reload)
if reload {
DispatchQueue.main.async {
// uiView.reloadData()
// tableView.reloadData()
context.coordinator.reload()
}
}
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
}
extension UIListView { …Run Code Online (Sandbox Code Playgroud)