【发布时间】:2021-01-21 11:05:10
【问题描述】:
我有一个视图,我希望用户在其中输入数据。然后我希望用户能够按下将用户引导到另一个视图的按钮。并且根据用户之前输入的值,我希望更改链接。该链接位于顶层,因为我不止一次需要它。因此,例如,如果用户输入“89”,我希望链接为“https://www.example.com/89”。
这是第一个视图的代码:
class lClass: ObservableObject {
@Published var longitude: String = ""
}
struct Data: View {
@State var showGraph = false
@ObservedObject var longitude2 = lClass()
var body: some View {
Button(action: {
self.showGraph.toggle()
}) {
Text("Show Graph")
}.sheet(isPresented: $showGraph){
GraphView()
}
if showGraph {
GraphView()
}
else {
HStack {
TextField("Longitude:", text: $longitude2.longitude)
}.frame(width: 400, height: 100, alignment: .center)
}
}
}
这是第二个视图的缩短代码:
var month = 1
var day = 1
var year = 2020
var latitude = 59.911232
var longitude = 10.757933
var offset = "1.0"
class test {
@ObservedObject var longitude2 = lClass()
}
class test2 {
var car = test.init().longitude2
}
private let url = URL(string: "https://midcdmz.nrel.gov/apps/spa.pl?syear=\(year)&smonth=\(month)&sday=\(day)&eyear=\(year)&emonth=\(month)&eday=\(day)&otype=0&step=60&stepunit=1&hr=12&min=0&sec=0&latitude=\(latitude)&longitude=\(longitude)&timezone=\(offset)&elev=53&press=835&temp=10&dut1=0.0&deltat=64.797&azmrot=180&slope=0&refract=0.5667&field=0")
private func loadData(from url: URL?) -> String {
guard let url = url else {
return "nil"
}
let html = try! String(contentsOf: url, encoding: String.Encoding.utf8)
return html
}
let html = loadData(from: url)
private func dbl1() -> Double {
let leftSideOfTheValue = "0:00:00,"
let rightSideOfTheValue = "\(month)/\(day)/\(year),1:00:00,"
guard let leftRange = html.range(of: leftSideOfTheValue) else {
print("cant find left range")
return 0
}
guard let rightRange = html.range(of: rightSideOfTheValue) else {
print("cant find right range")
return 0
}
let rangeOfTheValue = leftRange.upperBound..<rightRange.lowerBound
return Double(html[rangeOfTheValue].dropLast()) ?? 90
}
struct elevationGraph: View {
var body: some View {
Text(String(dbl1())
}
}
最后,我希望用户能够在第一个视图中选择变量、月、日、年、经度、纬度、偏移量。然后操作 url 使其使用用户输入的数据。
【问题讨论】: