在這種情況下,請考慮使用NSNotificationCenter在視圖控制器之間進行通信,而不是使用委託來傳遞數據。
在你的第一個視圖控制器,您將註冊偵聽通知:
- (void)viewDidLoad
{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleFourthViewSubmit:)
name:@"fourthViewSubmit"
object:nil];
}
,並創建方法時,通知發送到運行:
- (void)handleFourthViewSubmit:(NSNotification *)notification {
NSDictionary *theData = [notification userInfo]; // theData is the data from your fourth view controller
// pop views and process theData
}
在你的第一個視圖控制器dealloc方法,確保作爲觀察員取消註冊(以避免潛在的崩潰):
-(void) dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
[super dealloc];
}
然後在第四視圖控制器,廣播通知的輸入按鈕被按下時:
// note: dataDict should be an NSDictionary containing the data you want to send back to your first view controller
[[NSNotificationCenter defaultCenter] postNotificationName:@"fourthViewSubmit"
object:self
userInfo:dataDict];
這完美地工作,謝謝!我只有一個問題 - 我正在使用自動引用計數。我只用過ARC,並不太熟悉這些差異。我需要擔心dealloc方法,還是這是自動的?還有什麼我應該做的地方呢?再次感謝! –
如果您使用的是ARC,只需刪除對[[super dealloc]'的調用。編譯器會自動爲你添加它。 – jonkroll