小编Osa*_*eem的帖子

如何在 iOS 14 中删除 SwiftUI 2.0 中的列表分隔符行

所以问题很简单,就在标题中。我想在 SwiftUI iOS 14 中删除行分隔符。以前,我 UITableView().appearance().separatorStyle = .none 在 iOS 13 中使用 和使用它来完成这项工作。但是,现在它不起作用。有关如何使其工作的任何更新或想法。谢谢:)

xcode list separator swiftui ios14

29
推荐指数
5
解决办法
1万
查看次数

当向后滑动失败时,SwiftUI 导航栏项目会失控

我有一个ListViewTasksView然后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)

navigation swipe ios swiftui

14
推荐指数
1
解决办法
1281
查看次数

如何在 iOS 14 (Xcode 12 Beta) 中从 UIKit 生命周期转换为 SwiftUI 生命周期

我目前正在开发我正在使用的 SwiftUI 应用程序SceneDelegateAppDelegate. 我想知道我可以在生命周期的转换UIKitSwiftUI一个地方有一个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 在他们的会议或任何事情中谈论过这个问题。帮助将不胜感激。

ios appdelegate swiftui xcode12

11
推荐指数
2
解决办法
3023
查看次数

有没有办法在 SwiftUI 中更改列表的背景颜色?2020 (iOS 14)

我想更改列表的背景颜色。目前,我正在使用UITableView.appearance().backgroundColor更改颜色并且效果很好。但是,在 iOS 14 中,Apple 建议每个人都使用 collectionViews,我只是不知道我是否应该坚持下去。

我正在寻找其他方法来更改列表的背景颜色。问题是:我希望背景颜色与导航栏或测试行背景颜色相同,但我得到的是全黑背景。

在此处输入图片说明

在写作时,上面的UITableView.appearance().." in .onAppear' 我得到了想要的结果:

在此处输入图片说明

所以我的问题是,是否有更好的 iOS 14 方法来实现这一目标?

background list ios swiftui

7
推荐指数
1
解决办法
647
查看次数

SwiftUI 拖放预览在拖动时缩小太多

onDrag我已经使用和API在 SwiftUI 上实现了拖放onDrop。我对拖动的预览图像有疑问。当我们开始拖动时,该项目似乎缩小太多。正如您在下面的 gif 中看到的,项目的宽度等于整个屏幕的宽度。拖动时,预览会缩小很多。无论如何我可以保留相同的尺寸吗?

onDrag: preview {}在这种情况下,关闭也没有帮助。这是内置效果还是我对视图做错了什么?被拖动的视图没有任何框架 - 它都是动态的(Hstacksspacers)。

在此输入图像描述

image preview drag swiftui drop

7
推荐指数
0
解决办法
311
查看次数

“在视图更新期间修改状态,这将导致未定义的行为。” 在文本字段(SwiftUI)上键入时出错

我有两个文本字段,分别分配给:

@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)

state swiftui

6
推荐指数
1
解决办法
1257
查看次数

如何处理 UIViewControllerRepresentable 包装器内的 NavigationLink?

所以我正在尝试创建一个自定义分页滚动视图。我已经能够创建该包装器,并且该包装器中的内容由一个自定义视图组成。在那个自定义视图中,我有两个 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)

ios swift swiftui navigationlink

6
推荐指数
1
解决办法
2069
查看次数

UIButton 选择器不起作用

我有一个视图作为 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 方法中的目标存在一些问题。可能是什么问题?

button uiview uinavigationcontroller ios swift

5
推荐指数
1
解决办法
1982
查看次数

当视图位于SwiftUI的TabView中时,导航视图标题不会出现

我有两个视图,每个视图都包含带有标题的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。

在此处输入图片说明

ios swift navigationview swiftui

5
推荐指数
1
解决办法
1266
查看次数

为什么 NavigationLink 按钮在自定义 UIViewControllerRepresentable 包装器中显示为“禁用”

我创建了一个符合 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

5
推荐指数
1
解决办法
2506
查看次数