所以问题很简单,就在标题中。我想在 SwiftUI iOS 14 中删除行分隔符。以前,我 UITableView().appearance().separatorStyle = .none
在 iOS 13 中使用
和使用它来完成这项工作。但是,现在它不起作用。有关如何使其工作的任何更新或想法。谢谢:)
我有一个ListView,TasksView然后EditView。
流程是这样的:你有一个列表单元格,你点击它会带你到TasksView当一行被点击时TasksView它会带你到EditView。
当我向后滑动一半以导航到上一个视图时,导航栏会变得笨拙并重叠。它主要发生在我使用 navigationBarItem -(按钮)时。
其中TasksView (detailView)有一个列表和一些导航栏修饰符:
ZStack {
List {
// code here
}
}
.onAppear { UITableView.appearance().separatorStyle = .none }
.onDisappear { UITableView.appearance().separatorStyle = .none }
.background(Color("primaryBackground"))
.edgesIgnoringSafeArea(.bottom)
.navigationBarTitle("\(listItem.name ?? "")", displayMode: .inline)
.navigationBarItems(trailing:
Button(action: {self.deleteList()}) {
Image(systemName: "trash.circle.fill")
}
)
Run Code Online (Sandbox Code Playgroud)
也可以这样说EditView,当您轻扫一半EditView返回 时TasksView,会发生同样的事情。
这是行动中的错误:
任何人都知道如何解决这个错误?
编辑:
struct TasksView: View {
@Environment(\.presentationMode) var presentationMode
@EnvironmentObject var taskControl: TaskControl
@EnvironmentObject …Run Code Online (Sandbox Code Playgroud) 我目前正在开发我正在使用的 SwiftUI 应用程序SceneDelegate和AppDelegate. 我想知道我可以在生命周期的转换UIKit到SwiftUI一个地方有一个App结构,并用scenes等。
另外我想知道如何满足 CoreData 和 PersistentContainers 并将它们注入我们的环境。
我也曾经UIApplicationDelegateAdapter注射过,AppDelegate但@main它给了我错误
'main()' 仅在 iOS 14.0 或更新版本中可用
我@available (iOS 14.0, *)在开始时使用:
import SwiftUI
@available(iOS 14.0, *)
@main
struct MyApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样做,SceneDelegate代码去哪儿了。我仍然很困惑这种转换是如何进行的。我还没有看到 Apple 在他们的会议或任何事情中谈论过这个问题。帮助将不胜感激。
我想更改列表的背景颜色。目前,我正在使用UITableView.appearance().backgroundColor更改颜色并且效果很好。但是,在 iOS 14 中,Apple 建议每个人都使用 collectionViews,我只是不知道我是否应该坚持下去。
我正在寻找其他方法来更改列表的背景颜色。问题是:我希望背景颜色与导航栏或测试行背景颜色相同,但我得到的是全黑背景。
在写作时,上面的UITableView.appearance().." in .onAppear' 我得到了想要的结果:
所以我的问题是,是否有更好的 iOS 14 方法来实现这一目标?
onDrag我已经使用和API在 SwiftUI 上实现了拖放onDrop。我对拖动的预览图像有疑问。当我们开始拖动时,该项目似乎缩小太多。正如您在下面的 gif 中看到的,项目的宽度等于整个屏幕的宽度。拖动时,预览会缩小很多。无论如何我可以保留相同的尺寸吗?
onDrag: preview {}在这种情况下,关闭也没有帮助。这是内置效果还是我对视图做错了什么?被拖动的视图没有任何框架 - 它都是动态的(Hstacks等spacers)。
我有两个文本字段,分别分配给:
@State private var emailAddress: String = ""
@State private var password: String = ""
Run Code Online (Sandbox Code Playgroud)
现在,每当我在上面输入内容时,应用程序似乎都会卡住,并显示以下错误消息:
“在视图更新期间修改状态,这将导致未定义的行为。”
我有一个StartView():
class UserSettings: ObservableObject {
var didChange = PassthroughSubject<Void, Never>()
@Published var loggedIn : Bool = false {
didSet {
didChange.send(())
}
}
}
struct StartView: View {
@EnvironmentObject var settings: UserSettings
var body: some View {
if settings.loggedIn {
return AnyView(TabbarView())
}else {
return AnyView(ContentView())
}
}
Run Code Online (Sandbox Code Playgroud)
}
我创建了具有loggedInbool值的UserSettings的ObservableObject类。当用户点击中的“登录”按钮时LogInView(),此布尔值将变为true并出现一个新视图(TabbarView())
这是LogInView():
struct LogInView: …Run Code Online (Sandbox Code Playgroud) 所以我正在尝试创建一个自定义分页滚动视图。我已经能够创建该包装器,并且该包装器中的内容由一个自定义视图组成。在那个自定义视图中,我有两个 NavigationLink 按钮,按下后应该会将用户带到两个不同的视图。
那些 NavigationLink 按钮不起作用。
该scrollViewWrapper是NavigationView内。我创建了一个测试按钮,它只是一个简单的 Button 并且似乎有效。因此,我在使用 NavigationLink 和 custom 时没有正确执行某些操作UIViewControllerRepresentable。
这是我使用自定义包装器的地方。
NavigationView {
UIScrollViewWrapper {
HStack(spacing: 0) {
ForEach(self.onboardingDataArray, id: \.id) { item in
OnboardingView(onboardingData: item)
.frame(width: geometry.size.width, height: geometry.size.height)
}
}
}.frame(width: geometry.size.width, height: geometry.size.height)
.background(Color.blue)
}
Run Code Online (Sandbox Code Playgroud)
入职视图:
struct OnboardingView: View {
var onboardingData: OnboardingModel
var body: some View {
GeometryReader { geometry in
VStack(spacing: 10) {
Spacer()
Image("\(self.onboardingData.image)")
.resizable()
.frame(width: 300, height: 300)
.aspectRatio(contentMode: ContentMode.fit)
.clipShape(Circle())
.padding(20)
Text("\(self.onboardingData.titleText)")
.frame(width: geometry.size.width, height: …Run Code Online (Sandbox Code Playgroud) 我有一个视图作为 navigationController 的子视图放置,以填充整个显示。在此视图上,我有一个带有两个按钮的子视图。“删除并完成”。然后它还有一个日期选择器。datePicker 可以工作,但是,Remove 和 Done 按钮不会触发操作函数。
按钮:
var setButton: UIButton = {
var button = UIButton(type: .system)
button.setTitle("Done", for: .normal)
button.tintColor = .white
button.addTarget(self, action: #selector(handleReminderSetBtn), for: .touchUpInside)
return button
}()
var cancelButton: UIButton = {
var button = UIButton(type: .system)
button.setTitle("Remove", for: .normal)
button.tintColor = .white
button.addTarget(self, action: #selector(handleReminderCancelBtn), for: .touchUpInside)
return button
}()
Run Code Online (Sandbox Code Playgroud)
导航控制器中的主要 blackView:
viewOverLay.addSubview(cardreminder1)
viewOverLay.frame = CGRect(x: 0, y: 0, width: screenSize.width, height: screenSize.height)
viewOverLay.backgroundColor = UIColor.black.withAlphaComponent(0.3)
self.navigationController?.view.addSubview(viewOverLay)
Run Code Online (Sandbox Code Playgroud)
CardReminder1 是 UIView,我有两个按钮。
我认为这两个按钮的 addTarget 方法中的目标存在一些问题。可能是什么问题?
我有两个视图,每个视图都包含带有标题的NavigationView。我创建了一个TabBar视图,上面也带有NavigationView。
struct TabbarView: View {
var body: some View {
NavigationView{
TabView {
MainContentView()
.tabItem {
VStack {
Text("Main")
}
}.tag(0)
SearchContentView()
.tabItem {
VStack {
Text("Search")
}
}.tag(1)
}
}.navigationBarBackButtonHidden(true)
.navigationBarHidden(true)
}
Run Code Online (Sandbox Code Playgroud)
}
我曾尝试隐藏此视图的navigationBar,但这不起作用。仅此视图的导航栏出现。
这是 MainContentView()
struct MainContentView: View {
var body: some View {
NavigationView {
Text("Some Content View")
}
.navigationBarTitle("Travel")
}
Run Code Online (Sandbox Code Playgroud)
}
任何想法如何去做。谢谢!
更新:基本上,当我点击“ 登录”按钮时,我正在通过NavigationLink传递TabBarView()。
NavigationLink(destination: TabbarView()) {
HStack {
Text("Log In")
}
.padding()
.frame(width: geometry.size.width - 40, height: 40)
.foregroundColor(Color.white)
.background(Color.blue)
.cornerRadius(5)
}.padding(.bottom, 40)
Run Code Online (Sandbox Code Playgroud)
这样做时,它显示了带有子视图的TabbarView(),这就是我看到的:因为我将其推入navigationStack中,所以“旅行”(childView的navigationBarTitle)上方的空间就是该标签栏的navigationBar。
我创建了一个符合 UIViewControllerRepresentable 的包装器。我创建了一个 UIViewController,其中包含一个启用了分页的 UIScrollView。自定义包装器可以正常工作。
SwiftyUIScrollView(.horizontal, pagingEnabled: true) {
NavigationLink(destination: Text("This is a test")) {
Text("Navigation Link Test")
}
}
Run Code Online (Sandbox Code Playgroud)
此按钮显示为禁用和灰色。单击它没有任何作用。但是,如果将同一个按钮放在 ScrollView {} 包装器中,则它可以工作。
我在这里错过了什么。这是自定义滚动视图类代码:
enum DirectionX {
case horizontal
case vertical
}
struct SwiftyUIScrollView<Content: View>: UIViewControllerRepresentable {
var content: () -> Content
var axis: DirectionX
var numberOfPages = 0
var pagingEnabled: Bool = false
var pageControlEnabled: Bool = false
var hideScrollIndicators: Bool = false
init(axis: DirectionX, numberOfPages: Int, pagingEnabled: Bool,
pageControlEnabled: Bool, hideScrollIndicators: Bool, @ViewBuilder content:
@escaping () -> …Run Code Online (Sandbox Code Playgroud) scrollview uiscrollview uiviewcontroller swiftui navigationlink
swiftui ×9
ios ×6
swift ×3
list ×2
appdelegate ×1
background ×1
button ×1
drag ×1
drop ×1
image ×1
ios14 ×1
navigation ×1
preview ×1
scrollview ×1
separator ×1
state ×1
swipe ×1
uiscrollview ×1
uiview ×1
xcode ×1
xcode12 ×1