2016-07-27 3 views
0

私は列挙型を作成しました:didSelectEnumsをUITableViewで正しく使用するには?私のViewControllerで

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

を私が使用:

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で私aItemTypeの種類を設定することはできません。私はこのために、私のような何かをする必要がある、知っています。

誰でも私を助けることができますか?

+0

itemTypeに(rawValue:送信者! !itemTypeには – RJE

+0

@RJEが、私の第二tableviewcontroller ==)文字列として:文字列として送信者)' cellTypeと仮定すると 'itemTypeに' です - VARのcellTypeは:itemTypeに。ああ..あなたは、アイテムの種類が2番目のVCに表示されないことを意味します。 enumをグローバルに定義すると、他の素早いクラスにもそれが見えます。 – Doe

+0

使用 'itemsListTableViewController.cellType = itemTypeに(rawValue見ない.Restaurent – RJE

答えて

0

あなたは単にあなたがrawValueプロパティを使用することができますdidSelectRow

にこの

のように行うことができます。それは "生"型の対応する値を返します。

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

大丈夫です。 itemTypeのcellTypeを作成してください。 var cellType:ItemType? – Sahil

+0

私の問題はそれがecaxtlyでした。私の2番目のVCでは - ItemTypeは表示されません。 – Doe

0

を使用することができますあなたのVからiewControllerのような:

ViewController.ItemType 

それとも、あなたの例にマッチする:

var a : ViewController.ItemType 
関連する問題