从另一个View Controller中取消内存中的视图/视图控制器

时间:2011-12-30 18:46:09

标签: iphone objective-c ios xcode

我对Obj-C编程很新,所以请耐心等待。

我有一个标签栏。其中一个选项卡有一个表视图控制器,可将其从SQL数据库中获取的数据转换为数组。 在另一个选项卡中,它有一个重置所有内容的按钮(删除所有数据)。此选项卡的视图控制器成功删除了SQL数据库,但返回表选项卡时表仍然充满了数据。

当从其他视图控制器按下按钮时,如何从内存中卸载表视图控制器?

如果我模拟了内存警告,则表格会清除并在返回选项卡时重建。这就是我在代码中尝试做的事情。

由于

2 个答案:

答案 0 :(得分:3)

您需要在UITableView上致电reloadData

在内存警告期间清除它,导致视图控制器每次收到此警告时重新创建自己的视图(如果它当前不可见)。

答案 1 :(得分:1)

我认为您可以使用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];