2016-08-23 6 views
2

私は最初のView Controllerで宣言された辞書を持っていて、詳細ビューコントローラにSegueを通して辞書を渡したいのですが、唯一の問題はこれを達成する方法が完全にはわかりません?最初のビューコントローラで早送りでsegueを通して辞書を送信する

辞書:

var items = [NSDictionary]() 

詳細ビューコントローラ:あなたのDetailViewControllerで

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    var Pr : DetailViewController = segue.destinationViewController as! DetailViewController 

答えて

1

var items = [NSDictionary]() - これはNSDictionaryの素子のアレイです。あなたがNSDictionaryを希望される場合 - 角括弧なしでそれを宣言:でき保留辞書を渡されます、あなたがプロパティを宣言する必要がありDetailViewControllerで今

var items = NSDictionary() 

を、。これは、名前のまったく同じになります

class DetailViewController: UIViewController { 
    var items = NSDictionary() 
    /* ... */ 
} 

は今、あなたは(あなたがストーリーボードにsettedセグエの識別子を使用してください)辞書を渡すため prepareForSegueを使用することができます。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "yourSegue" { 
     let Pr : DetailViewController = segue.destinationViewController as! DetailViewController 
     Pr.items = items 
    } 
} 
1

はアイテムと呼ばれる変数を追加します。

class DetailViewController : UIViewController { 
    var items : NSDictionary? 
} 

次に、値を設定するための準備をします。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if let destView : DetailViewController = segue.destinationViewController as? DetailViewController { 
     destView.items = self.items 
    } 
} 
+0

かなり低品質の答えを。 'DetailViewController'の' items'(または 'item'?)プロパティはOPクラスの' items'を受け入れません。他の 'DetailViewController'に他のセグがあると、彼らはおそらくこのアイテムを持ちたくないでしょう。 –

+0

OPは彼が辞書を持っていると言いますが、実際には辞書の配列を持っていると言います。しかし、それを言及している必要があります。 OPはFirstViewControllerからDetailViewControllerに辞書を渡したいと言っています。それがまさにこれがすることです。 – Yannick

+0

あなたが何かを仮定するとき、あなたは私が信じる答えにそれを指摘するべきです。あなたのコードは何もしません。あなたの前提でコンパイルされないからです。速くて短く書いてはいけません。しばしば間違いの答えでいっぱいです。 –

関連する問題