2017-08-03 48 views
0

首先我要感谢的人抽出时间来帮我:)从不同的视图控制器创建performsegue

这里的追加新的对象是用来为我的阵列中创建对象的结构。

struct cellData { 
    let workoutName : String! 
    let workoutSets : Int 
    let workoutReps : Int 
} 

然后做一个数组出cellData

var workoutArray = [cellData]() 

基本上在我的MainScreen.swift我叫一个新的变量,将举行从performsegue函数传递

var passedData = cellData(workoutName: "", workoutSets: 0, workoutReps: 0) 

然后数据在我的CreateWorkout.swift中我指定了在segue之前应该发生什么。在这种情况下,我设置了目标视图控制器和一个新的常量,它将从结构中创建一个新对象,并将传递数据设置为等于我视图控制器中UI元素的值。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    let workout = cellData(workoutName: workoutName.text, workoutSets: Int(setStepper.text!)!, workoutReps: Int(repStepper.text!)!) 

    let destinationVC = segue.destination as! MainScreen 
    destinationVC.passedData = workout 

} 

Here is the app when I build the app

然后我把箱子按在我的文本字段

设置设置步进至4

设置众议员步进到5

It works right? Wrong!

我希望能够附加一个新的o bject每当我继续,但相反,它只是取代当前对象:(

+0

我有点困惑 - 你以后用'cellData'操作了什么东西?你期望它被附加到什么? – Michael

+0

@Michael我只是使用有点像一个类,然后使用它来创建一个数组中的对象。 –

+0

我认为你应该做的是为你的MainScreen创建一个数据源,并且每当你创建一个newDataCell时,你应该更新主屏幕的dataSource并在那里重新加载tableview – 3stud1ant3

回答

0

对于tableview应该有一个数据源,所以创建一个新的数据源,每次你创建一个新的数据单元只是将它附加到这个数据源,this将确保您获得MainScreen中的对象列表。

相关问题