如何正确使用UITableView中的枚举?

时间:2016-07-27 09:16:02

标签: ios swift uitableview enums

在我的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

任何人都可以帮助我吗?

2 个答案:

答案 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