Как передать переменные в MFMailComposeViewController () с помощью SwiftUI? - PullRequest
2 голосов
/ 12 марта 2020

Я использую код, указанный в ответе 2 из SwiftUI: отправьте электронное письмо , и оно работает как есть. Однако в моем приложении я хочу, чтобы v c .setSubject включал некоторые переменные:

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

riderFlagNumber происходит из userDefaults и работает нормально; но те, которые отмечены как activeBonus, поступают из подробного окна навигации, которое вызывает электронную почту. Они приходят из ObservableObject, который, кажется, доступен только из представления. Как передать эти переменные из этого представления в MFMailComposeViewController ()?

1 Ответ

2 голосов
/ 12 марта 2020

Я предполагаю, что указанное вами представление, содержащее класс 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 указанная вами тема будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...