无法从子视图更新superview中的表

时间:2012-06-18 17:26:28

标签: xcode4 subviews uitableview

我正在使用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];  

2 个答案:

答案 0 :(得分:0)

您是否阅读过UIViewController API reference?除了-viewDidLoad之外还有更多选项可用于处理视图的(重新)外观......

答案 1 :(得分:0)

好吧,UITableView代表们只是在加载视图或者要求它重新加载时调用..
所以在你的viewDidLoad或任何应该改变tableview内容的方法中,你需要写这一行

[tableview reloadData];

我希望我理解你的问题!!

相关问题