2010-12-14 99 views
2

我的應用程序有一個選項卡視圖控制器作爲主要接入點。 但是,當它第一次運行時,我需要檢查一些基本數據,如果缺少這些數據,我需要先顯示一個視圖來捕獲這些信息。選項卡視圖中的表格使用此信息來顯示數據。如何讓父視圖知道子視圖已被刪除 - iphone

我這樣做的方式是這樣的: 在我的應用程序委託中,我顯示了選項卡視圖。 然後檢查信息x。如果不存在,請添加子視圖2並將其顯示在頂部。 在view2中,我捕獲這些信息,然後點擊一個按鈕將它從superview中移除。所需數據存儲在模型的全局變量中。 現在,控件返回顯示它的選項卡視圖。 問題是我需要在選項卡視圖中重新加載表格數據,以便它反映正確的信息。但是,我無法在我的父級選項卡視圖中捕獲此信息。所以,我可以刷新的唯一方法是通過手動點擊一個不理想的按鈕。我希望它在子視圖從堆棧中移除後立即自動刷新。

回答

4

一個很好的方法是讓模型在添加新數據時發佈通知。您的表格視圖控制器可以偵聽該通知,並在收到該通知時可以重新加載其數據。

查看蘋果對Posting a NotificationRegistering for a Notification的解釋。

+0

什麼快速的答案!已經實現了它,並得到它的工作! - 謝謝 – user542584 2010-12-14 22:02:55

1

一種方法是繼承父視圖並覆蓋willRemoveSubview :.這是在視圖從其超級視圖中移除之前調用的。

6

註冊和呼叫通知是要走的路。

對於要發送通知的觀點:

- (void) viewDidLoad { 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateView:) name:@"updateView" object:nil]; 
} 

- (void)updateView:(NSNotification *)notification { 
    /* this is where the updates will take place, 
     such as a [tableView reloadData]; 
    */ 
} 

,並呼籲該通知:

[[NSNotificationCenter defaultCenter] postNotificationName:@"updateView" object:nil]; 
+0

謝謝你的示例代碼 - 不能投票,因爲這是我的第一篇文章。 :(但是感謝你的幫助 – user542584 2010-12-14 22:07:32

+0

你可以用複選標記來標記我的答案,就像upvote一樣好; D – WrightsCS 2010-12-14 22:09:12

+0

試圖用複選標記標記多個答案,但它只允許一個答案:(我給複選標記回答以前的答案因爲它第一次,實際上給了我解決方案。下次:) ..但是謝謝! – user542584 2010-12-14 22:13:11

相關問題