簡體   English   中英

從另一個View Controller中取消內存中的視圖/視圖控制器

[英]Kill a view/View controller from memory from another View Controller

我對Obj-C編程很新,所以請耐心等待。

我有一個標簽欄。 其中一個選項卡有一個表視圖控制器,可將其數據從SQL數據庫獲取到數組中。 在另一個選項卡中,它有一個重置所有內容的按鈕(刪除所有數據)。 此選項卡的視圖控制器成功刪除了SQL數據庫,但返回表選項卡時表仍然充滿了數據。

從其他視圖控制器按下按鈕時,如何從內存中卸載表視圖控制器?

如果我模擬內存警告,則表格會清除並在返回選項卡時重建。 這就是我在代碼中嘗試做的事情。

謝謝

您需要在該UITableView上調用reloadData

它在內存警告期間被清除,導致視圖控制器每次收到此警告時重新創建自己的視圖(如果它當前不可見)。

我認為你可以使用NSNotifications來實現這一目標。

在第一個視圖控制器的init方法中輸入以下代碼:

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(tableViewDataUpdated:)
                                                 name:@"DATA_UPDATED"
                                               object:nil];

創建一個tableViewDataUpdated方法,重新加載包含數據的數組,然后在表視圖上調用reload。

在第二個視圖控制器中,當sql數據庫被清除時,調用

NSNotification *notification = [NSNotification notificationWithName:@"DATA_UPDATED" object:nil userInfo:nil];
    [[NSNotificationQueue defaultQueue] enqueueNotification:notification postingStyle:NSPostASAP];

最后在第一視圖控制器的dealloc方法中包括:

[[NSNotificationCenter defaultCenter] removeObserver:self];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM