Uitableview 在Swift中的ViewController和条件Segue之间传递选定行

Uitableview 在Swift中的ViewController和条件Segue之间传递选定行,uitableview,core-data,swift,uiviewcontroller,xcode6,Uitableview,Core Data,Swift,Uiviewcontroller,Xcode6,我正在开发我的第一个应用程序,我已经画出了UI,但在我继续之前,我遇到了一个我一直在学习的教程中没有的绊脚石 Two issues I have: 1) Passing data between TableViewControllers 2) Conditional Segues 该应用程序使用CoreData,在模型中有一个包含3个托管对象的上下文:FocusArea,设备,&活动 我的应用程序的一部分将有3个表视图,显示从焦点区域,设备,&活动获取的结果。通过它们的导航将如下所示: Ste

我正在开发我的第一个应用程序,我已经画出了UI,但在我继续之前,我遇到了一个我一直在学习的教程中没有的绊脚石

Two issues I have:
1) Passing data between TableViewControllers
2) Conditional Segues
该应用程序使用CoreData,在模型中有一个包含3个托管对象的上下文:
FocusArea
设备
,&
活动

我的应用程序的一部分将有3个表视图,显示从
焦点区域
设备
,&
活动
获取的结果。通过它们的导航将如下所示:

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) 视图控制器:我计划使用
performsguewithidentifier
而不是使用9个不同的视图控制器,因此我只需要为对象设置3个视图控制器,并找出完成转换的逻辑

我是否会在
AppDelegate
中为TVC在每个步骤中创建一个全局变量,并将逻辑放入
performRequestWithIdentifier
中的每个VC的switch语句中

例如:

// 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。由于它们都在同一个上下文中工作,我可以将选择从一个TVC传递到另一个TVC,还是需要创建一个列表,以便下一个VC从中检索项目


如何从步骤1到步骤3获取信息?我是否必须将选择保存在分段之间的数组中,并在每个VC中使用回迁来优化它们?

为什么不让分段通过点击表视图单元格来触发呢?换句话说,这样做:用户从第一个表视图中选择选项->用户然后看到第二个表视图并从相应的选项集中选择->用户然后看到第三个表视图并从相应的选项集中选择。您可以始终在顶部放置“后退”按钮,以便用户可以返回并更改其选择

您的用户可能希望并期望您的应用程序能够像这样运行

无论如何,要回答您的问题:

1) 我建议您创建一个UIViewController超类,子类从中继承,然后在该类的.h文件中定义一个属性,该属性可以设置为一个对象,该对象包含每个视图控制器需要传递给下一个视图控制器的任何数据。然后,使用prepareforsgue传递下一个视图控制器需要的数据

2) 您可以将选择从一个TVC传递到另一个TVC(请参见#1)


编辑:如果您需要任何澄清,或者如果您觉得我误解了您的问题,请随时留下评论。我昨晚只睡了不到5个小时。

谢谢。我正在努力保持Swift的所有功能,我希望避免与Objective C混淆。我开始学习Obj-C/CoreData,当我完成了约1/2的时候,苹果公司切换到了Swift。我了解它的基本原理,但如果不需要的话,我不想和Obj-C混在一起。我没有向SQLite数据库添加任何内容。我只是选择、完善和保存一个列表。再次感谢您的回复。我在健身房仔细考虑了一下,我认为你是对的……不必要的复杂。我想我要做一个选择器VC,设置参数插入TVC显示#莱斯德拉马