point
- UIViewRepresentableを継承
- デリケートメソッド?を2つ用意する
makeUIView インスタンス生成時
func makeUIView(context: Context) -> MKMapView {
MKMapView()
}
updateUIView Viewの更新時
func updateUIView(_ uiView: MKMapView, context: Context) {
他のViewから呼び出すときの注意点 $で変数を用意
${変数} は状態管理が可能
TextFieldのような以前デリゲートが用意されていた者は、@Stateで置き換えてくれる様になった。かなり便利
呼び出し側 はクラスのインスタンスを作るだけ
struct ContentView: View {
@State var inputText:String = ""
@State var dispSearchKey:String = ""
var body: some View {
VStack{
TextField("キーワード",
text: $inputText, onCommit: {
dispSearchKey = inputText
})
.padding()
MapView(searchKey: dispSearchKey)
}
}
}
MapView(searchKey: dispSearchKey)での呼び出しでMapViewクラスのこの箇所が呼ばれる
当然hiroshimaは呼び出し時に上書きされる
struct MapView_Previews: PreviewProvider {
static var previews: some View {
MapView(searchKey: "hiroshima")
}
}