2012-01-02 13 views
16

我在故事板中有兩個控制器,嵌入在NavigationController中,並且有一個在這些控制器之間切換的segue。將數據傳回前一個控制器

將數據從第一個控制器傳遞到第二個控制器非常簡單,通過實現prepareForSegue,並使用segue.destinationViewController設置第二個控制器的屬性。

我應該傳回數據到從第二個控制器到前一個也。我GOOGLE了,但我還沒有找到任何簡單的,但工作代碼來演示它。

你會如此友善給我一個簡單的例子來說明最好的方法嗎?

在此先感謝!

回答

24

在你的第二個視圖控制器類中創建一個協議和委託。第一個視圖控制器將它設置爲prepareForSegue中的委託並實現協議方法。然後第二個視圖控制器將調用這些方法將數據傳回第一個視圖控制器。下面是我的一個項目的一些代碼。

@protocol TableSelectorDelegate <NSObject> 

@optional 
- (void)didMakeSelection:(id)selectionString forType:(NSString *)dataTitle; 
- (void)didAddNewValue:(NSString *)newValue forType:(NSString *)dataTitle; 

@end 

@interface TableSelectorViewController : UITableViewController 

@property (nonatomic, weak) id<TableSelectorDelegate> delegate; 

@end 
+0

對於iOS6,有展開segue – huggie 2013-01-29 04:54:10

2

這樣做的「推薦」方法是使用委託。在-prepareForSegue:調用期間,讓第一個視圖控制器將自己設置爲新視圖控制器的代表,然後完成後調用您定義的任何委託方法。

與緊密耦合兩個控制器相比,這樣做有點多餘,但如果您發現需要以稍微不同的方式使用控制器,它實際上可以節省時間。如果您觀看關於使用IB和Storyboard的WWDC'11視頻,他們實際上會深入探討這種模式,幷包含代碼示例和演示,因此我建議您查看一下。

3

當你設置你傳遞給第二個控制器的數據時,你也可以設置一個指向前一個的指針。

0

我一直在學習所有變種,以如何從一個視圖控制器將數據傳遞到另一個這個問題,並已經開始看到蘋果第二iOS應用教程不僅有代碼,但一個可愛的解釋所涉及的一切。

+0

我在哪裏可以找到它? – Jeroen 2012-10-23 18:24:18

+0

https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/SecondiOSAppTutorial/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011318 – 2012-10-23 19:09:03

+0

你也應該閱讀代表,如上所述在接受的答案中。 – 2012-10-23 19:09:48

相關問題