2016-11-24 69 views
2

我使用的委託方法與聲明如如何通過委託將多個對象傳回給父視圖控制器?

[self.delegate viewControllerDismissed:data1]; 

這種運作良好,將數據傳遞迴父。現在我需要發送更多數據。我可以使用類似

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

如果是這樣,協議等是什麼樣子?或者我只是通過一切和數組?我無法用兩個參數

+1

爲什麼不多次撥打該代表?否則,添加另一個接受NSArray的委託。 – Sealos

+0

如果我多次致電委託人,我會如何構造事物? –

回答

2

使用數據或迅速數組或詞典範例的模型找到任何的例子我所用

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

然後調用委託方法與創建的地點

delegate?.didSelectPlace(place: placeObject) 
+0

最好的方法是創建一個模型,並通過一個委託!!!! OR 使用NSNotificationCenter,並通過一個用戶信息字典 – Rishi

+0

是的,當然,還是車型陣列陣列''

0

不同的方式來做到這一點。

想法#1:向委託對象的類中添加一個方法,該方法可以將所有數據作爲參數。

@interface MyParentViewController : NSViewController 
- (void)someDataFromTheChildVC:(NSString *)data1 moreData:(NSArray *)data2; 
@end 

在子視圖控制器,請確保您投的degelate到MyParentViewController,讓你有機會獲得新的方法:

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

理念#2:把所有你想要的數據傳回一本字典,然後調用你平時viewControllerDismissed

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

你並不需要爲這個協議。

相關問題