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.