传递从几个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