From 33e2b52dc3a1aa99a3e803c737d11a5dfca3f0d8 Mon Sep 17 00:00:00 2001 From: Tom Hicks Date: Thu, 25 Mar 2021 00:19:44 -0700 Subject: [PATCH] Language editor layout fixes. --- iOS/MonsterCards/Models/LanguageViewModel.swift | 2 +- iOS/MonsterCards/Models/MonsterViewModel.swift | 2 ++ iOS/MonsterCards/Views/EditLanguage.swift | 17 +++++++++++------ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/iOS/MonsterCards/Models/LanguageViewModel.swift b/iOS/MonsterCards/Models/LanguageViewModel.swift index de6cad9..65bbccd 100644 --- a/iOS/MonsterCards/Models/LanguageViewModel.swift +++ b/iOS/MonsterCards/Models/LanguageViewModel.swift @@ -33,7 +33,7 @@ public class LanguageViewModel : NSObject, ObservableObject, Comparable, Identif @Published var name: String @Published var speaks: Bool - init( + public init( _ name: String = "", _ speaks: Bool = true ) { diff --git a/iOS/MonsterCards/Models/MonsterViewModel.swift b/iOS/MonsterCards/Models/MonsterViewModel.swift index b9fa6b9..e1a96f1 100644 --- a/iOS/MonsterCards/Models/MonsterViewModel.swift +++ b/iOS/MonsterCards/Models/MonsterViewModel.swift @@ -246,6 +246,8 @@ class MonsterViewModel: ObservableObject { monster.damageResistances = damageResistances.map {$0.name} monster.damageVulnerabilities = damageVulnerabilities.map {$0.name} monster.senses = senses.map {$0.name} + + // This is necessary so core data sees the language objects as changed. Without it they won't be persisted. monster.languages = languages.map {LanguageViewModel($0.name, $0.speaks)} } } diff --git a/iOS/MonsterCards/Views/EditLanguage.swift b/iOS/MonsterCards/Views/EditLanguage.swift index f6f352d..c6b07f0 100644 --- a/iOS/MonsterCards/Views/EditLanguage.swift +++ b/iOS/MonsterCards/Views/EditLanguage.swift @@ -11,12 +11,17 @@ struct EditLanguage: View { @ObservedObject var viewModel: LanguageViewModel var body: some View { - MCTextField( - label: "Name", - value: $viewModel.name) - .autocapitalization(.none) - - Toggle("Speaks", isOn: $viewModel.speaks) + VStack(alignment: .leading) { + MCTextField( + label: "Name", + value: $viewModel.name) + .autocapitalization(.none) + + Toggle("Speaks", isOn: $viewModel.speaks) + + Spacer() + } + .padding() } }