我有一個自定義放鬆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 ...看我的編輯,看看你是否可以確認這一點.. –