在我的ViewController中,我创建了一个枚举:
enum ItemType: String {
case Restaurant, Boutique, Resort
}
在didSelect
我使用:
self.performSegueWithIdentifier("goToItemsList", sender: ItemType.Restaurant.hashValue)
稍后,在:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "goToItemsList" {
let itemsListTableViewController = segue.destinationViewController as! ItemsListTableViewController
itemsListTableViewController.cellType = sender!
}
}
那么,我现在如何检查ItemsListTableViewController
if cellType == .Restaurant {
// Do something
}
?我知道,为此,我需要做类似的事情:
var a: ItemType
稍后检查一下,但我无法在我的ItemsListTableViewController中将a
的类型设置为ItemType
。
任何人都可以帮助我吗?
答案 0 :(得分:0)
你可以这样做
在didSelectRow中
您可以使用rawValue属性。它返回“原始”类型的相应值。
self.performSegueWithIdentifier("goToItemsList", sender: ItemType.Restaurant.rawValue)
和prepareForSegue
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "goToItemsList" {
let itemsListTableViewController = segue.destinationViewController as! ItemsListTableViewController
itemsListTableViewController.cellType = ItemType(rawValue: sender! as? String)
}
}
和其他视图控制器
var cellType :ItemType?
要么可以直接检查,要么可以使用开关
if let value = cellType {
switch(value) {
case .Boutique: // do something here
break
case .Resort: // do something here
break
case .Restaurant: // do something here
break
}
}
答案 1 :(得分:0)
您可以从ViewController访问枚举,如:
ViewController.ItemType
或者,为了匹配你的例子:
var a : ViewController.ItemType