如何使用 SwiftUI 将变量传递给 MFMailComposeViewController()?

Posted

技术标签:

【中文标题】如何使用 SwiftUI 将变量传递给 MFMailComposeViewController()?【英文标题】:How do I pass variables into MFMailComposeViewController() using SwiftUI? 【发布时间】:2020-03-12 19:56:33 【问题描述】:

我正在使用SwiftUI: Send email 的答案 2 中提供的代码,它可以正常工作。但是,在我的应用程序中,我想将 vc.setSubject 设置为包含一些变量:

vc.setSubject("2020_\(riderFlagNumber)_\(activeBonus.category)_\(activeBonus.city)_\(activeBonus.state),\(activeBonus.code)")

riderFlagNumber 来自 userDefaults 并且工作正常;但标记为 activeBonus 的那些来自触发电子邮件的导航详细信息视图。它们来自似乎只能从视图访问的 ObservableObject。如何将这些变量从该视图传递到 MFMailComposeViewController()?

【问题讨论】:

【参考方案1】:

我假设您指定的包含 ObservableObject 类的视图如下所示

class activeBonus: ObservableObject 
    @Published var category: String = "ABC"
    @Published var city: String = "Seoul"

如果是这样,在包含 MFMailComposeViewController() 的文件中添加以下内容(以下代码中指定的@ObserverObject 行):

struct MailView: UIViewControllerRepresentable 

    @Environment(\.presentationMode) var presentation
    @Binding var result: Result<MFMailComposeResult, Error>?
    @ObservedObject var activeBonus = activeBonus()

添加@ObservedObject 行后,您提到的主题行将起作用。

【讨论】:

以上是关于如何使用 SwiftUI 将变量传递给 MFMailComposeViewController()?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI-将@State变量传递给多个视图麻烦

如何将绑定变量传递给 ObservableObject?

SwiftUI - 如何将当前的强调色传递给工作表?

如何将通用视图传递给 SwiftUI 中的结构

如何将 swiftUI 的图像传递给 UIImage? [关闭]

SwiftUI - 按钮 - 如何将函数请求传递给父级