WebブラウザでURLを開くにはLink()を使う
Webブラウザとの行き来の仕組みはLink()機能に組み込まれている
Webページのデータは構造体として定義する
Identifiable, UUID, List, Link, URL, UIApplication.shared.canOpenURL
ContentView.swift
struct webData: Identifiable {
var id = UUID()
var name:String
var url:String
var favicon:String
}
let webList = [
webData(name: "アップル", url: "https://www.apple.com/jp/", favicon: "apple"),
webData(name: "東京国立博物館", url: "https://www.tnm.jp", favicon: "tnm"),
webData(name: "東京都現代美術館", url: "https://www.mot-art-museum.jp", favicon: "mo"),
webData(name: "川崎水族館", url: "https://kawa-sui.com", favicon: "kawa-sui")
]
struct ContentView: View {
var body: some View {
NavigationView {
List(webList) { item in
Image(item.favicon).resizable().frame(width:40, height:40)
Link(item.name, destination: URL(string: item.url)!)
}.navigationTitle("Webリスト")
}.navigationViewStyle(.stack)
}
}
webリンクはLink(_ title:String, destination:URL)で作ることができる
URLのチェックは UIApplication.shared.canOpenURL(url)によるURLチェックの仕組みを合わせられる
List(webList) { item in
HStack {
Image(item.favicon).resizable().frame(width:40, height:40)
if let url = URL(string: item.url), UIApplication.shared.canOpenURL(url){
Link(item.name, destination: url)
} else {
Text(item.name).foregroundColor(.gray)
+ Text(" URLエラー ").foregroundColor(.red).italic()
}
}
}.navigationTitle("Webリスト")
なるほどー
ラッパーがかなり用意さてますね