我有一个标签栏应用程序,可以在两个标签页中显示表格视图。使用NSFileManager填充表视图以读取与用户数据一起存储的plist文件的内容。其中一个选项卡显示“完整”项目,另一个选项卡显示“未完成”项目。当用户选择一行时,显示具有所选项目细节的页面。在不完整的表格中,有一个按钮,用户可以按这个按钮将这些细节从“未完成”表移动到“已完成”表。然后使用NSFileManager更新plist,以更改字段详细说明项目是否在此项目的完整或不完整列表中。
我遇到的问题是,只需在两个选项卡之间进行选择,就不会在两个表上更新更改。用户必须退出应用程序并再次启动它才能看到项目从一个表移动到另一个表。
数据似乎只是更新而不是更新的视图。
我是可可的新手,所以任何帮助都会非常感激。
答案 0 :(得分:1)
由于您尚未提供代码,因此我无法确定您应该在何处重新加载您的tableview。
你必须致电
[self.tableView reloadData];
在您完成使用NSFileManager将数据保存在plist中之后。
答案 1 :(得分:0)
表视图未更新,因为当您为表视图调用[self.tableview reloadData];
时,您可能没有调用reloadData
它应该更新tableviews。
由于您在每个视图被推入堆栈时使用标签栏控制器,因此您需要检测是否再次显示视图并调用reloadData
方法。
completed.m
中添加此内容:
-(void) viewWillAppear:(BOOL)animated{
[self.tableview reloadData];
}
<{1>} incomplete.m
检测NSFileManager
是否已保存数据,然后调用[self.tableview reloadData];
还有其他方法可以解决此问题,您可以通过委托或 NSNotifications 模式在viewcontrollers之间进行通信。因此,假设您保存了调用delegate
或NSNotification
方法的数据,接收方视图控制器会运行您想要的方法。在你的情况下刷新tableview
How do I set up a simple delegate to communicate between two view controllers?
http://mobile.tutsplus.com/tutorials/iphone/ios-sdk_nsnotificationcenter/