我目前使用WKInterfaceController
将字符串值从一个contextForSegueWithIdentifier
传递到另一个{1}},如下所示:
override func contextForSegueWithIdentifier(segueIdentifier: String, inTable table: WKInterfaceTable, rowIndex: Int) -> AnyObject? {
if segueIdentifier == "segueDetails" {
return self.string1
}
// Return data to be accessed in ResultsController
return nil
}
然后在目的地WKInterfaceController
上执行以下操作:
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
if let val: String = context as? String {
self.label.setText(val)
} else {
self.label.setText("")
}
// Configure interface objects here.
}
但是我想传递多个值,使用两个名为string2
和string3
的字符串值的附加属性。
如何将其他字符串值传递给WKInterfaceController
?
答案 0 :(得分:1)
Swift有三种集合类型:Array
,Dictionary
和Set
。
将上下文作为字符串数组传递:
...
if segueIdentifier == "segueDetails" {
return [string1, string2, string3]
}
func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
// Configure interface objects here.
if let strings = context as? [String] {
foo.setText(strings[0])
bar.setText(strings[1])
baz.setText(strings[2])
}
}
将上下文作为字典传递:
...
if segueIdentifier == "segueDetails" {
return ["foo" : string1, "bar" : string2, "baz" : string3]
}
func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
// Configure interface objects here.
if let strings = context as? [String: String] {
foo.setText(strings["foo"])
bar.setText(strings["bar"])
baz.setText(strings["baz"])
}
}
就个人而言,我更喜欢使用字典,因为如果调用者改变了字符串的顺序或数量,则数组方法会更脆弱。
无论哪种方式,都要添加必要的检查以使代码健壮。