傳遞從幾個VC的數據,最後一個你可以在這個PIC欣賞我們有三個不同的VC的一個App,比上選擇了最後一個與一些可變數據取決於選項那些。
因此,例如,在這種情況下,用戶選擇了藍色,適合的樣式和L尺寸。
我們的想法是將數據從第一個VC,第二個VC和第三個VC傳遞到Last VC中的差距。
有什麼建議嗎?這將非常感激。
傳遞從幾個VC的數據,最後一個你可以在這個PIC欣賞我們有三個不同的VC的一個App,比上選擇了最後一個與一些可變數據取決於選項那些。
因此,例如,在這種情況下,用戶選擇了藍色,適合的樣式和L尺寸。
我們的想法是將數據從第一個VC,第二個VC和第三個VC傳遞到Last VC中的差距。
有什麼建議嗎?這將非常感激。
創建,你可以將這些屬性存儲在一個模型類:
class MyChoices {
var color : String? // or you could use enums for each of them
var style : String? // that would be a better choice, but for the
var size : String? // sake of simplicity I use strings in this example
}
然後你通過類型MyChoices的變量從一個VC到另一個你prepareForSegue方法
EDIT(一些更多的信息,看到FactorJose答案)
在VC 1添加變量
class VC1: UIViewController {
@IBOutlet weak var nextOutlet: UIButton!
@IBOutlet weak var colourLabel: UILabel!
var choice : MyChoice?
...
再往上:
@IBAction FUNC redButton(發件人:AnyObject){ nextOutlet.hidden =假
colourLabel.text = "Red colour selected"
choice.color = "Red"
}
所有這些IBActions。
然後在prepareForSegue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
let nextVC = segue.destinationViewController as! VC2
nextVC.choice = self.choice
}
VC2和VC3是非常相似的再次
格倫的回答另一種方法是使用NSUserDefaults
。把它想像爲一個小型鍵值數據庫PropertyList
s。
您可以將新的鍵值添加到它與
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(clothingColor, forKey: "Clothing Color")
然後做
let defaults = NSUserDefaults.standardUserDefaults()
let clothingColor = defaults.objectForKey("Clothing Color")
由於用戶默認檢索以前保存的鍵值是共享和存儲在磁盤,這些信息將持續存在於不同的視圖控制器中。它也尊重封裝,這是很好的面向對象實踐,因爲你的尺寸控制器不需要知道顏色或樣式,反之亦然。
是的,您可以使用NSUserDefaults,但我寧願將它看作持久性存儲(就像寫入磁盤一樣),而在這裏實際上是將變量傳遞給...更喜歡在內存中做這樣的事情,因爲它的開銷較小(在較慢的設備上速度更快) – Glenn
感謝Edman爲您準備的時間。我已經修改了這個問題 – FactorJose
大家好!正如你可以在這張照片中看到的,我們有一個App有三個不同的VC,最後一個有一些可變數據,這取決於前面選擇的選項。
因此,例如,在這種情況下,用戶選擇了藍色,適合的樣式和L尺寸。
我們的想法是將數據從第一個VC,第二個VC和第三個VC傳遞到Last VC中的差距。
任何建議傢伙?這將是非常讚賞
代碼:
class VC1: UIViewController {
@IBOutlet weak var nextOutlet: UIButton!
@IBOutlet weak var colourLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
nextOutlet.hidden = true
}
@IBAction func redButton(sender: AnyObject) {
nextOutlet.hidden = false
colourLabel.text = "Red colour selected"
}
@IBAction func blueButton(sender: AnyObject) {
nextOutlet.hidden = false
colourLabel.text = "Blue colour selected"
}
@IBAction func greenButton(sender: AnyObject) {
nextOutlet.hidden = false
colourLabel.text = "Green colour selected"
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {}
}
VC2和VC3是相同的VC1(同一網點和按鈕)
lastVC
@IBOutlet weak var colourLabel: UILabel!
@IBOutlet weak var styleLabel: UILabel!
@IBOutlet weak var sizeLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
而最後一堂課存儲字符串
import UIKit
class MyChoices {
var colour : String?
var style : String?
var size : String?
}
我們可以做什麼?
@Glenn抱歉重複Glenn – FactorJose
你能更具體一點嗎?我是Swift中的新編碼。 這是一個NSObject類的對嗎? – FactorJose
不只是您自己定義的類,也不需要繼承NSObject,一個普通的模型類(Model-View-Control = MVC)。在你的模型存儲你的數據,你的意見,你把笏用戶看到的,而Controller是 – Glenn
他們之間那如果(segue.identifier ==「賽格瑞」){ 設VC = SEGUE膠水。 destinationViewController爲! lastVC vc.passColor = self.color – FactorJose