2016-11-24 6 views
2

私はこれがうまく機能などデリゲートを使用して複数のオブジェクトを親ViewControllerに渡す方法

[self.delegate viewControllerDismissed:data1]; 

文でバック親にデータを渡すために、デリゲートメソッドを使用しています。今私はより多くのデータを送る必要がある。

[self.delegate viewControllerDismissed:data1 with:data2]; 

そうであれば、プロトコルなどはどのように見えますか?または、私はすべてを通り抜けて配列を渡すだけですか?私はその後、作成された場所でデリゲートメソッドを呼び出す

class Place: NSObject { 
    var placeId: String = "" 
    var primaryText: String = "" 
    var secondaryText: String = "" 
    var latitude: Double = 0 
    var longitude: Double = 0 
} 

を使用していますどのような私は、2つのパラメータ

+1

デリゲートを何度も呼び出さないのはなぜですか?それ以外の場合は、NSArrayを受け入れる別のデリゲートを追加します。 – Sealos

+0

私はデリゲートを何度か呼び出すと、どのように物事を構成しますか? –

答えて

2

使用データやSWIFTの配列や辞書の例のモデルと任意の例を見つけることができません

delegate?.didSelectPlace(place: placeObject) 
+0

最良の方法は、モデルを作成し、代理人を通過することです!!!! OR NSNotificationCenterを使用し、userInfo dict – Rishi

+0

yes、sure、またはモデルの配列 'Array ' –

0

これを行うさまざまな方法。

アイデア#1:デリゲートオブジェクトのクラスにすべてのデータを引数として取り込むメソッドを追加します。

子ビューコントローラで
@interface MyParentViewController : NSViewController 
- (void)someDataFromTheChildVC:(NSString *)data1 moreData:(NSArray *)data2; 
@end 

、あなたは新しいメソッドへのアクセス権を持っているので、あなたは、MyParentViewControllerにdegelateをキャストしていることを確認します

MyParentViewController *parent = (MyParentViewController *)self.delegate; 
[parent someDataFromTheChildVC:@"blah" moreData:someArray]; 

アイデア#2:あなたが望むすべてのデータを入れてバック辞書に渡すために、そしていつものviewControllerDismissedを呼び出す:

NSDictionary *data = @{ 
    @"data1": @"blah", 
    @"data2": someArray 
}; 
[self.delegate viewControllerDismissed:data]; 

あなたは、このためのプロトコルを必要としません。

関連する問題