SwiftUI预览中DismissAction无法初始化问题求助
SwiftUI预览中DismissAction初始化报错的解决办法
你遇到的问题是因为DismissAction没有公开的无参初始化器,无法直接通过DismissAction()创建实例——它是SwiftUI在特定场景(如sheet、导航栈)下通过环境自动注入的类型。
以下是两种可行的解决方式:
方式一:传递带空闭包的DismissAction实例
直接使用接受闭包的初始化器创建模拟的DismissAction,闭包内可以留空或添加调试逻辑:
struct MilkingView_Previews: PreviewProvider { static var previews: some View { MilkingView(parentDismiss: DismissAction { // 预览环境下的触发逻辑,比如打印日志 print("预览中触发了dismiss动作") }) } }
方式二:调整视图使用环境注入的DismissAction
如果你的视图不需要通过参数传递DismissAction,可以改用@Environment属性直接获取,这样预览无需手动传递实例:
修改视图代码:
struct MilkingView: View { @Environment(\.dismiss) private var parentDismiss var body: some View { // 你的视图内容 Button("关闭") { parentDismiss() } } }
预览代码:
struct MilkingView_Previews: PreviewProvider { static var previews: some View { // 将视图包裹在能提供dismiss环境的容器中,比如NavigationStack NavigationStack { MilkingView() } } }
内容的提问来源于stack exchange,提问作者Rojer
相关产品推荐
相关产品推荐

