#swift #swiftui
Вопрос:
У меня есть функция, которая вычисляет 2 значения из 4 пользовательских входных данных. и я хочу их показать. Я добавил свои выходные данные в качестве переменных @State.
import SwiftUI
struct ContentView: View {
@State private var dogruSayisiK = ""
@State private var yalnisSayisiK = ""
@State private var dogruSayisiT = ""
@State private var yalnisSayisiT = ""
@State private var ortalamaDK = 1
@State private var ortalamaDT = 1
@State private var STD: Double = 20
@State private var isEditing = false
@State private var temelBP: Double = 0
@State private var klinikBP: Double = 0
let ortalamaT = [45, 50, 55, 60]
let ortalamaK = [45, 50, 55, 60]
//let SD = [17,18,19,20,21,22,23]
func puanHesapla() ->(temelBP: Double, klinikBP: Double) {
let yalnisNK = Double(yalnisSayisiK) ?? 0
let dogruNK = Double(dogruSayisiK) ?? 0
let yalnisNT = Double(yalnisSayisiT) ?? 0
let dogruNT = Double(dogruSayisiT) ?? 0
let toplamNetK = dogruNK - (yalnisNK*0.25)
let toplamNetT = dogruNT - (yalnisNT*0.25)
let zT = (toplamNetT - Double(ortalamaDT)) / STD
let T = 50 10 * zT
let zK = (toplamNetK - Double(ortalamaDK)) / STD
let K = 50 10 * zK
let temelBP = 0.7 * T 0.3 * K
let klinikBP = 0.5 * T 0.5 * K
return (temelBP, klinikBP)
}
var body: some View {
Form {
Section(header: Text("Standard Dev.")) {
HStack{
Text("17")
Slider(value: $STD, in: 17...23, step: 1, onEditingChanged: { editing in isEditing = editing})
Text("20")
}
Text("(STD, specifier: "%.1f") ")
.frame(maxWidth: .infinity, alignment: .center)
.foregroundColor(isEditing ? .red : .blue)
}
Section( header: Text("Klinik Bilimler") ){
VStack(alignment: .leading) {
HStack(spacing: 10) {
Text("Klinik Dogru Sayisi")
.foregroundColor(.blue)
TextField("Dogru Sayisi", text: $dogruSayisiK)
.keyboardType(.numberPad)
}
HStack(spacing: 10) {
Text("Klinik Yalnis Sayisi")
.foregroundColor(.red)
TextField("Yalnis Sayisi", text: $yalnisSayisiK)
.keyboardType(.numberPad)
}
Picker("Sinav Ortalamasi", selection: $ortalamaDK) {
ForEach(0 ..< ortalamaK.count) {
Text("(self.ortalamaK[$0])%")
.pickerStyle(SegmentedPickerStyle())
}
}
}
.pickerStyle(SegmentedPickerStyle())
}
Section(header: Text("Temel Bilimler") ) {
VStack (alignment: .leading) {
HStack(spacing: 10) {
Text("Temel Bilim Dogru Sayisi")
.foregroundColor(.blue)
TextField("Dogru Sayisi", text: $dogruSayisiT)
.keyboardType(.numberPad)
}
HStack(spacing: 10) {
Text("Temel Bilim Yalnis Sayisi")
.foregroundColor(.red)
TextField("Yalnis Sayisi", text: $yalnisSayisiT)
.keyboardType(.numberPad)
}
Picker("Temel Bilim Ortalama", selection: $ortalamaDT) {
ForEach(0 ..< ortalamaT.count) {
Text("(self.ortalamaT[$0])%")
}
}
}
.pickerStyle(SegmentedPickerStyle())
}
Button("Hesapla"){
puanHesapla()
print($klinikBP)
}
.background(Color.white)
.foregroundColor(Color.black)
.frame(width: 70, height: 70, alignment: .center)
Section(header: Text("Sonuc")){
HStack{
VStack{
Text("Temel Bilim Puan")
.foregroundColor(.red)
Text("(temelBP, specifier: "%.2f")")
}
VStack{
Text("Klinik Bilim Puan")
.foregroundColor(.red)
Text("(klinikBP, specifier: "%.2f")")
}
}
}
}
}
}
функция работает, а также кнопка.Добавлена строка кода в мою функцию print(temelBP)
, и она печатается, когда я нажимаю на свою функцию. Как я могу отобразить значения в последнем разделе моего представления содержимого, Тексты.
Ответ №1:
Установите значение klinikBP
var.
Button("Hesapla"){
let hesapla = puanHesapla()
klinikBP = hesapla.klinikBP
temelBP = hesapla.temelBP
print(klinikBP)
print(temelBP)
}
Примечание: Не требуется $
знак для печати значения.