Skip to content

Instantly share code, notes, and snippets.

@katsuyoshi
Last active February 12, 2023 13:39
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save katsuyoshi/a5a4ad6fc0b7ea65eb7233c642ce7334 to your computer and use it in GitHub Desktop.
Save katsuyoshi/a5a4ad6fc0b7ea65eb7233c642ce7334 to your computer and use it in GitHub Desktop.
TextFieldでoptionalを扱う場合について
import SwiftUI
struct ModelView: View {
@ObservedObject var model: Model
@State var timeStr: String = ""
var body: some View {
HStack {
Text(model.name)
TextField("", text: $timeStr)
}
.onAppear() {
if let t = model.time {
timeStr = String(t)
} else {
timeStr = ""
}
}
}
}
struct ContentView: View {
@State var selectedModel: Model? = nil
var body: some View {
VStack {
Button("A") {
selectedModel = models[0]
}
Button("B") {
selectedModel = models[1]
}
if let selectedModel {
ModelView(model: selectedModel)
} else {
HStack {
}
}
Spacer()
}
.frame(width: 100, height: 100)
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
import Foundation
import SwiftUI
class Model: ObservableObject {
init(name: String, time: Double?) {
self.name = name
self.time = time
}
var name: String
var time: Double?
}
var models: [Model] = [
Model(name: "A", time: 1.0),
Model(name: "B", time: 2.0),
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment