我有一个自定义放松SEGUE问题。让我解释一下我的控制器设置:发送数据
我有一个主屏幕,这是一个导航控制器中的单元格视图。在这个视图中,有一个用于添加数据的按钮,在该视图中有4个按钮用于添加其他“类型”数据。一旦用户选择了这四个选项中的一个,他们就会看到一个特定于他们选择的视图控制器,让他们用一个完成按钮输入数据。我将从现在开始分别将它们称为主视图,选项视图,然后是数据视图(所有4个选项都遵循这个约定)。
一些教程后,我做了一个自定义的身心在主视图中的控制器类SEGUE,如下所示:
@IBAction func unwindToTables(segue: UIStoryboardSegue) {
//function proto for adding data here
//populateTableWithData(data :ItemData)
}
在故事板编辑器,只要我control
+ click
从任何视图控制器它的退出,它会列出我的正确放松继续,这工作正常。
我现在想通过开卷发送数据。在数据视图中,我有一个完成按钮构造并初始化类数据,称为的ItemData我想穿过SEGUE。
我在SO或其他网站上发现的大多数问题都与正常的segues有关,当我尝试实现它们时,应用程序导致运行时错误/不编译。
有没有人来到这个问题之前,并有说问题的解决方案?任何帮助或点在正确的方向将不胜感激!
编辑:
我编辑我的开卷功能如下:
@IBAction func unwindToTables(segue: UIStoryboardSegue) {
let dataC = segue.sourceViewController as? DataVC
let data : ItemData = dataC!.SubmittedData! //unwrapping error
print(data.Name)
//save data
}
,并在每一个新{} 1-4的视图控制器顶部我有以下几点:
import UIKit
class New1ViewController: DataVC,
和我做了一个新的超DataVC:
import Foundation
class DataVC: UITableViewController {
var SubmittedData: ItemData?
}
但现在我得到一个解开的问题......我必须先初始化SubmittedData吗?
编辑2:
想我可能会添加完成按钮按我做的......
@IBAction func DonePressed(sender: AnyObject) {
let n = ...
...
let d = ...
super.SubmittedData = ItemData(FieldType: "1", CName: n!, CPhone: p!, CAddress: a!, ShouldBe: s!, Repeats: r!, Starts: b, RemindMe: m!, AdditionalNotes: d!)
}
因此,在您的嘲讽离子我实际上有每个视图控制器分开的类。我在Data View类中继续前进,并在任何方法(全局变量非常多)之外完成了这个'var dataValues:ItemData',并将其填充到我的Done按钮中。现在,当我进入主视图的控制器类并放置你放入的内容(当然是修改过的)时,我无法访问该变量,因为它是内部的,而且输入public会导致初始化(???)出错。 –
如果您添加一个属性,您需要初始化它或将其声明为可选。我会建议可选的方法,这意味着解开它,如果你访问它 – Paulw11
我刚刚意识到我可能会遇到问题,我正在检查四个不同的viewcontrollers ...看我的编辑,看看你是否可以确认这一点.. –