gpt4 book ai didi

swift - Apple 开发者 SwiftUI 教程的预览问题 - 与 UIKit 的框架集成接口(interface)

转载 作者:行者123 更新时间:2023-12-03 09:17:45 26 4
gpt4 key购买 nike

我对 Swift 和 Xcode 还很陌生。我一直在关注 Apple 的 SwiftUI 教程并且没有遇到太多问题,直到我来到这里:与 UIKit 交互 (https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit)
当我进入第 5 步时,构建成功,但没有预览。
我收到的错误是:
“RemoteHumanReadableError:无法更新预览。
预览过程似乎已经崩溃。
向代理发送“渲染”消息时遇到错误。
====================================
| RemoteHumanReadableError:操作无法完成。 (BSServiceConnectionErrorDomain 错误 3。)
|
| BSServiceConnectionErrorDomain (3):
| ==BSErrorCodeDescription:操作失败”
任何关于我做错了什么以及为什么错了都会有很大帮助的帮助:)
编辑:添加代码


import SwiftUI

struct PageView<Page: View>: View {
var viewControllers: [UIHostingController<Page>]

init(_ views: [Page]) {
self.viewControllers = views.map { UIHostingController(rootView: $0) }
}

var body: some View {
PageViewController(controllers: viewControllers)
}
}

struct PageView_Previews: PreviewProvider {
static var previews: some View {
PageView(features.map { FeatureCard(landmark: $0) })
.aspectRatio(3/2, contentMode: .fit)
}
}

最佳答案

使用这个page as inspiration ,我能够使用以下代码在 XCode 12 中完成这项工作:

import SwiftUI

struct PageView<Page: View>: View {
var viewControllers: [UIHostingController<Page>]

init(viewControllers: [UIHostingController<Page>]) {
self.viewControllers = viewControllers
}

init(_ views: [Page]) {
self.viewControllers = views.map { UIHostingController(rootView: $0) }
}

var body: some View {
PageViewController(controllers: viewControllers)
}
}

struct PageView_Previews: PreviewProvider {
// the static in the following line is critical to it working...
static let controllers = features.map { UIHostingController(rootView: FeatureCard(landmark: $0)) }

static var previews: some View {
PageView(viewControllers: controllers).aspectRatio(3/2, contentMode: .fit)
}
}
看来您需要传递一个完全构造的 UIHostingController预览中的数组,所以我创建了一个额外的 init用于预览模式的重载。 [Page]基于 init是保持代码与教程中的下游步骤兼容。至于为什么它适用于 static let ,可悲的是,我不知道(即,如果您将 let 语句放入 previews 作为非静态 let ,它将无法生成预览。

关于swift - Apple 开发者 SwiftUI 教程的预览问题 - 与 UIKit 的框架集成接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64046303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com