正如您在本照片中所欣赏的那样,我们有一个带有三个不同VC的应用程序和一个带有一些可变数据的应用程序,具体取决于之前选择的选项。
因此,例如,在这种情况下,用户选择了蓝色,合适的样式和L作为大小。
我们的想法是将第一个VC,第二个VC和第三个VC的数据传递给Last VC中的空白。
有什么建议吗?非常感谢。
答案 0 :(得分:1)
创建一个模型类,您可以在其中存储这些属性:
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
}
然后在prepareForSegue方法中将MyChoices类型的变量从一个VC传递到另一个VC
编辑(更多信息,请参阅FactorJose的答案)
在VC 1中添加变量
class VC1: UIViewController {
@IBOutlet weak var nextOutlet: UIButton!
@IBOutlet weak var colourLabel: UILabel!
var choice : MyChoice?
...
然后继续:
@IBAction func redButton(sender:AnyObject){ nextOutlet.hidden = false
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再次非常相似
答案 1 :(得分:0)
大家好!正如你在这张照片中所欣赏的那样,我们有一个带有三个不同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?
}
我们能做什么?
答案 2 :(得分:-1)
Glenn的回答是使用NSUserDefaults
。可以把它想象成PropertyList
s的迷你键值数据库。
您可以使用
为其添加新的键值let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(clothingColor, forKey: "Clothing Color")
然后通过执行
检索以前保存的键值let defaults = NSUserDefaults.standardUserDefaults()
let clothingColor = defaults.objectForKey("Clothing Color")
由于用户默认值是共享的并存储在磁盘中,因此信息将在不同的视图控制器中保留。它还尊重封装,这是一种很好的面向对象实践,因为你的尺寸控制器不必知道任何关于颜色或样式的信息,反之亦然。