SwiftUIでSheetを使いたい場合の一例です。
下のサンプルコードは、実際のコードを使っています。
sheetの部分は下の方にあるのですが、sheetの表示・非表示はState変数isTimelineを使って、それをオンオフすることによって表示を切り替えています。
では、sheetはどこの部分につけるかというと、このサンプルでは、body内のルートにあるVStackに付けています。
また、sheetを非表示にする為に、sheet内にボタンを設置し、ボタンをタップすることによって、変数isTimelineをオフにしてsheetを非表示にしています。
SomeView.swift
ViewData["atmark"]State var isTimeline = false //シートを表示・日表示する為のオンオフ用の変数 var body: some View { VStack{ Text("長押しで最近10件のツイートが、タップ1回でTwitterが、2回で役所のホームページが開きます") Divider() Text(self.pref).font(.title) List(TwitterList.getData(self.pref)) { item in HStack { Text(item.city) VStack { Text("Twitter:" + item.twitter) Text(item.note) }.gesture(TapGesture(count:2) .onEnded{ (val) in if item.note.contains("http") { let text: String = item.note debugPrint(text) let url = URL(string: text) if UIApplication.shared.canOpenURL(url!) { UIApplication.shared.open(url!, options:[:], completionHandler: nil) } } }) .gesture(TapGesture(count: 1) .onEnded{ val in if item.twitter.contains("ViewData["atmark"]") { let text: String = "https://twitter.com/" + item.twitter.suffix(item.twitter.count - 1) let url = URL(string: text) if UIApplication.shared.canOpenURL(url!) { UIApplication.shared.open(url!, options:[:], completionHandler: nil) } } }) .onLongPressGesture { if item.twitter.contains("ViewData["atmark"]") { swifter.getTimeline(for: .screenName(item.twitter),count: 10, success: {json in //print(self.json); print(json[0]) self.json = json },failure: {error in print(error)}) self.isTimeline.toggle() } } }.font(.subheadline) } } .sheet(isPresented: $isTimeline, content: { //sheetはここです。変数isTimelineをオンオフする事によって表示したり非表示にしたりします。 VStack{ Button(action: {self.isTimeline.toggle()}, label: { //ボタンを設置して変数isTimelineをオフにしています。 Text("戻る") } ) } } }