SwiftUI button 与sheet的使用
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SwiftUI button 与sheet的使用相关的知识,希望对你有一定的参考价值。
参考技术A SwiftUI 中想要不跳转从主View弹出一个View,以前在swift中,可以直接选择一按钮拖线到新的View在你想弹出的View下方.sheet()后选择isPresented,然后绑定一个@state变量,当这个变量值变化时,刷新View,所以在button中点击后触发方法,改变了值,所以刷新视图弹出。你可以选择下拉关闭这个View,但是有时需要用户点击一个按钮后,自动关闭,就需要实现下面方法
在ios13中弹出的View无法全屏。
SwiftUI List 在 Sheet 中的外观和行为与在 NavigationLink 中不同
【中文标题】SwiftUI List 在 Sheet 中的外观和行为与在 NavigationLink 中不同【英文标题】:SwiftUI List looks and behaves differently in Sheet than in NavigationLink 【发布时间】:2021-05-02 13:40:35 【问题描述】:我创建了一个列表视图,其中包含供用户选择的部分(请参阅 LocationPickerModalView.swift),此列表可通过 NavigationLink 获得并按预期工作。然而,我决定将这个确切的视图移动到工作表(参见 ThrillEditView.swift),但这极大地改变了视图的外观和工作方式。 (参见下面的 Gif) 有没有办法使用工作表获得相同的行为?
// ThrillEditView.swift
public struct ThrillEditView: View
@State private var isLocationPickerSheetPresented: Bool = false
public var body: some View
form
// ...
NavigationLink("NavigationLink", destination: LocationPickerModalView())
Button("Sheet (Via Button)")
self.isLocationPickerSheetPresented = true
// ...
.sheet(isPresented: self.$isLocationPickerSheetPresented, content:
LocationPickerModalView()
)
// LocationPickerModalView.swift
public struct LocationPickerModalView: View
public var body: some View
List
Button("1")
Button("2")
Section(header: Text("one"))
Button("3")
Button("4")
Section(header: Text("two"))
Button("5")
Button("6")
【问题讨论】:
它们对我来说看起来一样(Xcode 版本 12.5 (12E262)) 【参考方案1】:.sheet
会创建新的视图层次结构,因此您需要在其中显式地添加 NavigationView
,例如
.sheet(isPresented: self.$isLocationPickerSheetPresented, content:
NavigationView
LocationPickerModalView()
)
【讨论】:
这给出了相同的结果,除了将其包装在 NavigationView 中会在顶部添加 NavigationBar。以上是关于SwiftUI button 与sheet的使用的主要内容,如果未能解决你的问题,请参考以下文章