Я работаю над своим первым приложением, и у меня есть пользовательский интерфейс, но до того, как я продвигаюсь вперед, я ударил камень преткновения из ворот, в учебниках, которые я изучал.Передача выбранных строк между ViewControllers и условными segues в Swift
Two issues I have:
1) Passing data between TableViewControllers
2) Conditional Segues
Приложение использует CoreData и имеет контекст с 3-мя управляемыми объектами в модели: FocusArea
, Equipment
, & Activity
.
Часть моего приложения будет иметь 3 TableViews, отображающие неправдоподобные результаты FocusArea
, Equipment
, & Activity
. Навигация через них будет выглядеть следующим образом:
Step 1 -> Step 2 -> Step 3 -> save selections
focusAreaTVC -> equipmentTVC -> activityTVC -> saveVC
equipmentTVC -> focusAreaTVC -> activityTVC -> saveVC
activityTVC -> focusAreaTVC -> equipmentTVC -> saveVC
Когда элемент/элементы в/выбираются на шаге 1, кнопка «Далее» будет перейти к шагу 2, параметры отображения, доступные для строк, выбранных на шаге 1. Как только пользователь сделает выбор на шаге 2, оставшиеся доступные варианты будут отображаться на шаге 3. Я предвижу окончательный выбор на экране сохранения, который будет сохранен в виде массива или словаря.
Вопросы: 1) Вид контроллеры: Вместо того чтобы использовать 9 различных ViewControllers, я планирую использовать performSegueWithIdentifier
поэтому мне нужно только настроить 3 контроллеров отображения для объектов и выяснить логику для выполнения переходов.
Могу ли я создать глобальную переменную в AppDelegate
для TVC на каждом шаге и поместить логику в оператор switch для каждого VC в пределах performSequeWithIdentifier
?
пример:
// AppDelegate variables start all nil, updated at each step, reset to nil on save
var step1VC = "equipmentVCUsed"
var step2VC = "focusAreaTVCUsed"
var step3VC = nil
// VC switch statement (contained in each TableViewController)
var segueIdentifier: String
switch segueName {
case step1TVC = "focusAreaTVC":
segueName = "equipmentTVC"
case step1TVC = "equipmentTVC:
segueName = "focusAreaTVC"
case step1TVC = "activityTVC":
segueName = "focusAreaTVC"
case step2TVC = "equipmentTVC":
segueName = "activityTVC"
case step2TVC = "focusAreaTVC", step1VC = "equipmentVC":
segueName = "activityTVC"
case step2TVC = "focusAreaTVC", step1VC = "activityVC":
segueName = "equipmentTVC"
case step3VC != nil,
segueName = "saveVC"
step1TVC = nil
step2TVC = nil
default:
println("Something so the the compiler doesn't yell at me")
}
2) Я планирую сделать выбор в шаге 1 и передать их к шагу 2 в VC, доработать там, переходите к шагу 3. Так как все они работают вне тот же контекст , могу ли я просто передать выбор из 1 TVC в другой или мне нужно создать список, из которого следующий VC будет извлекать элементы?
Как получить информацию с шага 1 до этапа 3? Должен ли я сохранить выбор в массиве между segues и усовершенствовать их с помощью наборов в каждом VC?
Спасибо. Я пытаюсь сохранить все это в Swift, и я бы хотел избежать беспорядка с Objective C. Я начал изучать Obj-C/CoreData, и Apple переключилась на Swift, когда я выполнил ~ 1/2. Я понимаю основы этого, но я бы предпочел не обезьяна с Obj-C, если мне это не нужно. Я ничего не добавляю в SQLite DB. Я просто выбираю, уточняю и сохраняю список. – iOSPadawan
Еще раз спасибо за ваш ответ. Я подумал об этом в спортзале, и я думаю, что ты прав ... бесполезно сложно. Я думаю, что я собираюсь сделать селектор VC, который устанавливает параметры для подключения к TVC для отображения. #LessDrama – iOSPadawan