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リスト")
なるほどー
ラッパーがかなり用意さてますね