【发布时间】:2016-03-25 06:29:02
【问题描述】:
我有一个 ViewController 子类,它分为多个不同的其他视图(使用单个 ViewController 类型)。我已经在 Storyboard 中的 segues 上放置了标识符,我想在运行时比较它们,以便将数据传递给它们,如下所示:
class MyListViewController : UITableViewController {
static let segueNameFoo : String = "segueFoo"
static let segueNameBar : String = "segueBar"
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
super.prepareForSegue( segue, sender: sender )
if segue.identifier == segueNameFoo {
let vc : MyDetailViewController = segue.destinationViewController as! MyDetailViewController
vc.someData = "foo"
} else if segue.identifier == segueNameBar {
let vc : MyDetailViewController = segue.destinationViewController as! MyDetailViewController
vc.someData = "bar"
}
}
}
问题是,Xcode 7.3 给了我这些错误:
静态成员
segueNameFoo不能用于MyListViewController类型的实例
静态成员segueNameBar不能用于MyListViewController类型的实例
当我将其更改为 let segueNameFoo : String = "segueFoo" 时,它构建并运行良好。
我不明白为什么它在抱怨 - segue.identifier 是 NSString* 并且 Swift 支持 == 它们之间的比较。我对static let 的使用是为了不为MyListViewController 的每个实例分配segueNameFoo。怎么了?
【问题讨论】: