Jos*_*lia 11 xcode uikit swift swiftui
我对 Swift 和 Xcode 还很陌生。我一直在关注 Apple 的 SwiftUI 教程,并没有遇到太多问题,直到我来到这里:与 UIKit 交互(https://developer.apple.com/tutorials/swiftui/interface-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)
}
}
Run Code Online (Sandbox Code Playgroud)
小智 10
使用此页面作为灵感,我能够使用以下代码在 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)
}
}
Run Code Online (Sandbox Code Playgroud)
看来您需要UIHostingController从预览中传递一个完全构造的数组,因此我创建了一个额外的init重载以用于预览模式。该[Page]基init是保持代码与本教程中的下游步骤兼容。至于为什么它适用于static let,可悲的是,我不知道(即,如果您将let语句放在里面previews作为非静态let,它将无法生成预览。
| 归档时间: |
|
| 查看次数: |
1581 次 |
| 最近记录: |