2016-07-27 30 views
0

在我的ViewController我创建了一个枚举:如何正确使用UITableView中的枚举?

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 

,只是后来检查,但我不能把我的aItemType的类型我ItemsListTableViewController。

任何人都可以帮助我吗?

+0

的ItemType(rawValue:发送者! as String)== .Restaurent – RJE

+0

@RJE但是我的第二个tableviewcontroller没有看到itemType – Doe

+0

使用'itemsListTableViewController.cellType = ItemType(rawValue:sender!as String)'假设cellType是一个'ItemType' - var cellType:ItemType。啊..你的意思是Item类型在第二个VC中不可见。如果你在全局定义枚举,其他的Swift类应该可以看到它。 – RJE

回答

0

,你可以简单地做这样的

在didSelectRow

可以使用rawValue属性。它返回“raw”类型的相应值。

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 
} 

} 
+0

我得到'不能分配'MainViewController.ItemType'类型的值在'ItemType(rawValue:sender!as String)'中输入'String''这个错误' – Doe

+0

好吧。只需制作一个CellType的cellType var cellType:ItemType? – Sahil

+0

我的问题非常严重。在我的第二个VC中 - ItemType不可见 – Doe

0

您可以访问枚举从你的V iewController像:

ViewController.ItemType 

或者,以匹配您的例子:

var a : ViewController.ItemType