简体   繁体   中英

How to use Enums in UITableView properly?

In my ViewController I've created an Enum:

enum ItemType: String {
    case Restaurant, Boutique, Resort
}

in didSelect I use:

self.performSegueWithIdentifier("goToItemsList", sender: ItemType.Restaurant.hashValue)

later, in:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "goToItemsList" {
        let itemsListTableViewController = segue.destinationViewController as! ItemsListTableViewController
        itemsListTableViewController.cellType = sender!
    }
}

So, how can I now check in my ItemsListTableViewController

if cellType == .Restaurant {
   // Do something
}

? I know, for this, I need do something like:

var a: ItemType

and just later to check that, but I cannot set the type of my a to ItemType in my ItemsListTableViewController.

Can anyone help me with that?

you can simply do like this

in didSelectRow

you can use rawValue property. it returns The corresponding value of the "raw" type.

self.performSegueWithIdentifier("goToItemsList", sender: ItemType.Restaurant.rawValue) 

and in 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)
}
}

and in other view controller

var cellType :ItemType?

either you can directly check or can use switch

if let value = cellType {

switch(value) {

case .Boutique: // do something here
 break
case .Resort: // do something here
break
case .Restaurant: // do something here
break
}

}

You can access the enums from your ViewController like:

ViewController.ItemType

Or, to match your example:

var a : ViewController.ItemType

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM