我正在使用Xcode 4.3,虽然我多年来一直是程序员,但我在Xcode中有点像nubbie。
我有一个名为First的UIView,它包含一个UITable,它从内存中的文件中获取其内容。然后我创建一个名为Second的子视图UIView,它在数据文件中进行更改,这些更改应该更改First中表的内容。当我删除第二个并返回到第一个时,并不奇怪,表格不会更新。下次从头开始加载First时,该表反映了所做的更改。
首先包含viewDidLoad方法,该方法用于从包含表所需数据的文件中的数据加载NSArray。我可以从Second调用viewDidLoad,但除非从新更改的NSArray更新表,否则表将在更改之前显示。
所以我的问题是如何从Second调用表方法,以便在我删除Second并返回First时更新First中的表。我已经尝试调用将数据加载到表中的table方法但由于我遇到编译错误而失败了。我需要知道如何以一种方式调用表函数,这将导致在返回第一个表时更新表。
至少部分问题是我不知道如何调用表更新,因为它没有像我预期的那样从viewDidLoad中调用。
对不起,这是一个冗长的问题描述。我写的其余大部分程序都在工作,我已经处理了这个问题好几个月了。我每隔几周就会回来再次刺伤它,但到目前为止还没有运气。我真的很感激你能给予的任何帮助,这将有助于提高我的理解并解决问题。
以下是修复后的代码:first(superview)相关代码
-(void)viewDidLoad {
NSFileManager * fm = [[NSFileManager alloc] init];
NSError* err = nil;
NSPredicate *fltr = [NSPredicate predicateWithFormat:@"self ENDSWITH '.dir'"];
NSArray *array = [fm contentsOfDirectoryAtPath: userFolder error:&err];
self.listData = [array filteredArrayUsingPredicate:fltr];
[self.tableView reloadData]; //This does the updating must make table an IBOutlet as
[super viewDidLoad]; //described in one of the comments by m. Othman
}
这是修复后的代码:第二个(子视图)相关代码。这个代码位于 在进行更改的方法中,应该影响表格显示
UIView * start = [self.view superview]; //this line and next two call viewDidLoad in first
UIResponder * nextResponder = [start nextResponder];
[nextResponder viewDidLoad];
答案 0 :(得分:0)
您是否阅读过UIViewController API reference?除了-viewDidLoad之外还有更多选项可用于处理视图的(重新)外观......
答案 1 :(得分:0)
好吧,UITableView
代表们只是在加载视图或者要求它重新加载时调用..
所以在你的viewDidLoad或任何应该改变tableview内容的方法中,你需要写这一行
[tableview reloadData];
我希望我理解你的问题!!