错误:传递给不带参数的调用的参数SwiftUI
在我的代码中,我遇到了这个错误,我不知道如何解决它。错误在后面的代码块中错误:传递给不带参数的调用的参数SwiftUI,swift,swiftui,Swift,Swiftui,在我的代码中,我遇到了这个错误,我不知道如何解决它。错误在后面的代码块中 struct Map: View { @ObservedObject public var dataManager = DataManager.shared @Binding public var seqId: String // rz- to pass seqId to second view // @State public var seqId2: St
struct Map: View {
@ObservedObject public var dataManager = DataManager.shared
@Binding public var seqId: String
// rz- to pass seqId to second view
// @State public var seqId2: String = ""
var body: some View {
ZStack {
VStack {
Text("Results").foregroundColor(Color.white).onAppear{self.dataManager.downloadSeqData(seqId: self.seqId)} .onAppear(perform: playSound)/*rz want to add this sound func to contentview somehow, otherwise it will constantly play sound when page loads */ .edgesIgnoringSafeArea(.all)
//rz- if strand is linear draw line
if dataManager.dataSet?.INSDSeq.topology == "linear" {
Rectangle()
.fill(Color.black)
.frame(width: 500, height: 20)
}
//rz- if strand is circular draw o
if dataManager.dataSet?.INSDSeq.topology == "circular" {
Circle()
.stroke(Color.black, style: StrokeStyle(lineWidth: 20, lineCap: .round, lineJoin: .round))
.frame(width: 500, height: 500)
}
if dataManager.dataSet?.INSDSeq.topology != "circular" && dataManager.dataSet?.INSDSeq.topology != "linear"{
Text("Data Unavailable, try a new accession number.")
}
}
.navigationBarItems(
//rz - added home and genbank view to navigation bars
leading:
NavigationLink(destination: ContentView()) {
Text("New Query")
.font(.title)
.foregroundColor(Color.black)
},
trailing:
NavigationLink(destination: Screen(seqId: self.$seqId)) {
Text("GenBank View")
.font(.title)
.foregroundColor(Color.black)
错误在$seqId
NavigationLink(destination: Screen(seqId: self.$seqId)) {
这是屏幕视图
import SwiftUI
struct Screen: View {
@ObservedObject public var dataManager = DataManager.shared
@State private var seqId: String = ""
var body: some View {
VStack {
TextField("Enter Accession Number", text: $seqId)
.padding()
Button("Search")
{
dataManager.downloadSeqData(seqId: seqId)
}
ScrollView {
VStack(alignment: .leading) {
Text(dataManager.dataSet?.INSDSeq.locus ?? "")
.padding()
Text(dataManager.dataSet?.INSDSeq.organism ?? "").padding()
Text(dataManager.dataSet?.INSDSeq.source ?? "").padding()
Text(dataManager.dataSet?.INSDSeq.taxonomy ?? "").padding()
Text(dataManager.dataSet?.INSDSeq.topology ?? "").padding()
Text(dataManager.dataSet?.INSDSeq.length == nil ? "" : "\(dataManager.dataSet!.INSDSeq.length)") .padding()
Text(dataManager.dataSet?.INSDSeq.strandedness ?? "").padding()
Text(dataManager.dataSet?.INSDSeq.moltype ?? "").padding()
Text(dataManager.dataSet?.INSDSeq.sequence ?? "").padding()
}
.cornerRadius(10)
VStack(alignment: .leading, spacing: 10) {
ForEach(dataManager.featureList, id:\.self) { feature in
VStack (alignment: .leading){
VStack (alignment: .leading) {
Text(feature.INSDFeature_key).bold()
Text(feature.INSDFeature_location)
}.padding()
IntervalSection(feature: feature)
QualsSection(feature: feature)
}
.cornerRadius(10)
}
}
.cornerRadius(20)
}
.padding(.horizontal)
}
}
}
struct IntervalSection: View {
var feature: INSDFeature
var body: some View {
VStack (alignment: .leading){
ForEach(0..<feature.INSDFeature_intervals.count, id: \.self) { i in
ForEach(0..<feature.INSDFeature_intervals[i].INSDInterval.count, id: \.self) { j in
if let from = feature.INSDFeature_intervals[i].INSDInterval[j].INSDInterval_from {
VStack (alignment: .leading){
Text("\(from)").bold()
Text("\(feature.INSDFeature_intervals[i].INSDInterval[j].INSDInterval_to ?? -1)")
}
.padding()
.cornerRadius(10)
}
}
}
}
}
}
struct QualsSection: View{
var feature: INSDFeature
var body: some View {
VStack (alignment: .leading){
ForEach(0..<feature.INSDFeature_quals.count , id: \.self) { i in
ForEach(0..<feature.INSDFeature_quals[i].INSDQualifier.count , id: \.self) { j in
VStack (alignment: .leading){
Text(feature.INSDFeature_quals[i].INSDQualifier[j].INSDQualifier_name).bold()
Text(feature.INSDFeature_quals[i].INSDQualifier[j].INSDQualifier_value)
}
.padding()
.cornerRadius(10)
}
}
}
}
导入快捷界面
结构屏幕:视图{
@ObservedObject public var dataManager=dataManager.shared
@国家私有变量seqId:String=“”
var body:一些观点{
VStack{
TextField(“输入登录号”,文本:$seqId)
.padding()
按钮(“搜索”)
{
dataManager.downloadSeqData(seqId:seqId)
}
滚动视图{
VStack(对齐:。前导){
文本(dataManager.dataSet?.INSDSeq.locus??“”)
.padding()
文本(dataManager.dataSet?.INSDSeq.org???).padding()
文本(dataManager.dataSet?.INSDSeq.source???).padding()
文本(dataManager.dataSet?.INSDSeq.taxonomy???).padding()
文本(dataManager.dataSet?.INSDSeq.topology???).padding()
文本(dataManager.dataSet?.INSDSeq.length==nil?”:“\(dataManager.dataSet!.INSDSeq.length)”).padding()
文本(dataManager.dataSet?.INSDSeq.strandness???).padding()
文本(dataManager.dataSet?.INSDSeq.moltype???).padding()
文本(dataManager.dataSet?.INSDSeq.sequence???).padding()
}
.转弯半径(10)
VStack(对齐:。前导,间距:10){
ForEach(dataManager.featureList,id:\.self){feature in
VStack(对齐:。前导){
VStack(对齐:。前导){
文本(feature.INSDFeature_key).bold()
文本(特征.检验特征\位置)
}.padding()
间隔(特征:特征)
QualsSection(功能:功能)
}
.转弯半径(10)
}
}
.转弯半径(20)
}
.padding(.卧式)
}
}
}
结构区间:视图{
var特征:INSDFeature
var body:一些观点{
VStack(对齐:。前导){
ForEach(0..在SwiftUI中,如果数据来自另一个视图,则应使用绑定
而不是状态
。此外,屏幕
的两个属性都是私有的,因此在这种情况下,不能从结构本身外部访问它们
我建议将dataManager
中的seqID
公开,就像您使用dataManager
一样,并将其更改为State
,Screen
是什么?Screen
的init方法看起来像什么?很可能您没有这样的init。Screen是显示的内容视图信息是列表格式的。屏幕页面中没有init方法发布代码太麻烦了?它有什么属性,如果它是一个结构(我假设它是),则总是有一个综合init。只是上载了它,视图没有将seqId作为参数,因为该属性是私有的(并且是一个@State
变量)。在我看来,屏幕视图不需要使用seqId初始化,因为它将其作为输入?否则您需要将其更改为@Binding
并删除private