小编Ата*_*ков的帖子

在 UIViewControllerRepresentable 中传递数据

我正在尝试使用 UIKit 制作 PDFView 并从以前的 SwiftUI 视图传递数据。数据本身是一个带有文件名的字符串。不知何故,该字符串没有从 UIViewControllerRepresentable 传递到 UIViewController 并且保持为空。我实在找不到发生这种情况的原因。你能检查一下我哪里错了吗?我希望这段代码足够了。

我正在使用 NavigationLink(destination: FileViewerWrapper(file: "some string")) {}

import PDFKit
import UIKit
import SwiftUI

let pdfView = PDFView()

class FileViewer: UIViewController {

var file = String()


override func viewDidLoad() {
    super.viewDidLoad()

    print("\n\n\n-----------------------\(file)\n-------------------------------\n\n\n")

    pdfView.translatesAutoresizingMaskIntoConstraints = false
    view.addSubview(pdfView)

    pdfView.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor).isActive = true
    pdfView.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor).isActive = true
    pdfView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor).isActive = true
    pdfView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor).isActive = true

    guard let path = Bundle.main.url(forResource: file, withExtension: "pdf", subdirectory: "Files") else { return }

    if let document = PDFDocument(url: …
Run Code Online (Sandbox Code Playgroud)

xcode pdfkit swiftui

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

如何在Swift中确认可识别协议的枚举?

我正在尝试使用新的SwiftUI框架枚举列出案例的原始值。但是,我在使“数据”符合可识别协议方面遇到了麻烦,而且我真的找不到信息。它告诉我“ Initializer'init(_:rowContent :)'要求'Data'必须符合'Identifiable'”。存根在最后一个扩展中为我提供了ObjectIdentifier变量,但不知道我应该返回什么。你能告诉我怎么做吗?如何使数据符合可识别性,以便可以列出原始值?

enum Data: String {
    case firstCase = "First string"
    case secondCase = "Second string"
    case thirdCase = "Third string"
}

extension Data: CaseIterable {
    static let randomSet = [Data.firstCase, Data.secondCase]
}

extension Data: Identifiable {
    var id: ObjectIdentifier {
        return //what?
    }

}

//-------------------------ContentView------------------------
import SwiftUI

struct Lala: View {
    var name: String

    var body: some View {
        Text(name)
    }
}

struct ContentView: View {
    var body: some View {
        return List(Data.allCases) { i in …
Run Code Online (Sandbox Code Playgroud)

enums ios swiftui swift5.1

4
推荐指数
3
解决办法
1795
查看次数

找不到类型的 ObservableObject

我正在尝试使用模式表从主视图快速访问包含最喜欢的项目的列表。最喜欢的对象保存在一个EnvironmentObject数组中。在模式表中有一个按钮,您基本上可以在其中从收藏夹列表中添加/删除对象。但是,当您删除一个项目时,它EnvironmentObject会变空并且应用程序崩溃:

线程 1:致命错误:未找到ObservableObject类型FavouritesList

在日志中它说:

View.environmentObject(_:)FavouritesList可失踪这一观点的祖先:文件

我如何确保它回归ContentView自然?

import SwiftUI

struct ContentView: View {
    @EnvironmentObject var favouriteList: FavouritesList
    @State private var presentingSheet = false

    var body: some View {
        NavigationView {
            List {
                NavigationLink(destination: JudgementsView()) {
                    Text("Judgements")
                }
                NavigationLink(destination: SecondaryView()) {
                    Text("Secondary acts")
                }
                ScrollView(.horizontal, showsIndicators: false) {
                    VStack {
                        if favouriteList.items.isEmpty {
                            Text("Nothing favoured")
                        } else {
                            ForEach(favouriteList.items, id: \.self) { id in
                                VStack {
                                    HStack { …
Run Code Online (Sandbox Code Playgroud)

swift swiftui

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

标签 统计

swiftui ×3

enums ×1

ios ×1

pdfkit ×1

swift ×1

swift5.1 ×1

xcode ×1