#xcode #arkit #realitykit
#xcode #arkit #realitykit
Вопрос:
Я пытаюсь создать приложение дополненной реальности с помощью RealityKit, но contentView.swift У меня возникли некоторые проблемы, чего здесь не хватает?` Вы можете увидеть ошибки на картинке, которой я поделился. Я следовал некоторому руководству, поэтому я новичок в Xcode и Realitykit.
Failed to produce diagnostic for expression; please file a bug report Cannot find 'PlacementButtonsView' in scope
import SwiftUI
import RealityKit
struct ContentView : View {
var models: [String] = {
let filemanager = FileManager.default
guard let path = Bundle.main.resourcePath, let files = try?
filemanager.contentsOfDirectory(atPath:path) else
{ return[]
}
var avaliableModels: [String] = []
for filename in files where filename.hasSuffix("usdz") {
let modelName = filename.replacingOccurrences(of: ".usdz", with: "")
avaliableModels.append(modelName)
}
return avaliableModels
}()
var body: some View {
ZStack(alignment: .bottom) {
ARViewContainer()
ModelPickerView(models: self.models)
PlacementButtonsView()
}
}
}
struct ARViewContainer: UIViewRepresentable {
func makeUIView(context: Context) -> ARView {
let arView = ARView(frame: .zero)
return arView
}
func updateUIView(_ uiView: ARView, context: Context) {}
}
struct ModelPickerView: View {
var models: [String]
var body: some View {
ScrollView(.horizontal, showsIndicators: false) {
HStack(spacing: 20) {
ForEach(0 ..<
self.models.count) { index in
Button(action: {
print("DEBUG: selected model with name: (self.models[index])")
}) {
Image(uiImage: UIImage(named: self.models[index])!)
.resizable()
.frame(height: 60)
.aspectRatio(1/1,contentMode: .fit)
.background(Color.white)
.cornerRadius(12)
}
.buttonStyle (PlainButtonStyle())
}
}
}
.padding(15)
.background(Color.black.opacity(0.5))
}
struct PlacementButtonsView: View {
var body: some View {
HStack {
//Cancel Button
Button(action: {
print("DEBUG: model placement canceled.")
}) {
Image(systemName: "xmark")
.frame(width: 60, height: 60)
.font(.title)
.background(Color.white.opacity(0.75))
.cornerRadius(30)
.padding(20)
}
//Confirm Button
Button(action: {
print("DEBUG: model placement confirmed.")
}) {
Image(systemName: "checkmark")
.frame(width: 60, height: 60)
.font(.title)
.background(Color.white.opacity(0.65))
.cornerRadius(30)
.padding(20)
}
}
}
}
#if DEBUG
struct ContentView_Previews : PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
}
Ответ №1:
Проверьте свои фигурные скобки. PlacementButtonsView
Структура фактически вложена в ModelPickerView
структуру и недоступна глобально, поэтому она недоступна из вашего ContentView
.
Кстати, в Xcode вы можете узнать об этом, нажав на объявление PlacementButtonsView
:
ModelPickerView.PlacementButtonsView
показывает, что здесь пошло не так; PlacementButtonsView
вложен внутри ModelPickerView
. Вот почему у вас, похоже, странная закрывающая скобка в последней строке вашего примера кода — та же проблема возникает с предварительным просмотром, поскольку он также вложен ModelPickerView
.
Чтобы сделать эту проблему более заметной и легче увидеть подобные проблемы в будущем, вы также можете попросить Xcode сделать отступ для вашего кода, выбрав все (Cmd A), а затем нажав Control I. Вы увидите PlacementButtonsView
отступ структуры, что делает более понятным, что он недоступен глобально.