【发布时间】:2016-06-20 09:43:27
【问题描述】:
我有一个自定义展开转场问题。让我解释一下我的控制器设置:
我有一个主屏幕,它是一个导航控制器,里面有一个单元格视图。在此视图中,有一个添加数据的按钮,在该视图中有 4 个按钮用于添加其他“类型”的数据。一旦用户选择了这四个选项之一,他们就会看到一个特定于他们选择的视图控制器,允许他们使用完成按钮输入数据。从现在开始,我将这三个屏幕分别称为 Main View、Options View 和 Data View(所有 4 个选项都遵循此约定)。
经过一些教程后,我在主视图的控制器类中做了一个自定义展开转场,如下所示:
@IBAction func unwindToTables(segue: UIStoryboardSegue) {
//function proto for adding data here
//populateTableWithData(data :ItemData)
}
在故事板编辑器中,无论何时我从任何视图控制器control + click 到它的出口,它都会正确列出我的展开segue,这工作正常。
我现在想通过展开发送数据。在 Data View 中,我有一个 Done 按钮,用于构造和初始化一个名为 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
}
在每个 New{1-4}ViewController 之上,我有以下内容:
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!)
}
【问题讨论】:
标签: ios uiviewcontroller segue unwind-segue