0

我使用的是 Xcode 4.3,虽然我已经做了很多年的程序员,但我在 Xcode 中有点像个小鬼。

我有一个名为 First 的 UIView,其中包含一个 UITable,它从内存中的文件中获取其内容。然后,我创建了一个名为 Second 的子视图 UIView,它在数据文件中进行了更改,这些更改应该会更改 First 中表的内容。当我删除 Second 并返回 First 时,这并不奇怪,表没有更新。下次从头开始加载 First 时,该表会反映所做的更改。

首先包含方法 viewDidLoad,该方法用于从文件中的数据中加载一个 NSArray,其中包含表所需的数据。我可以从 Second 调用 viewDidLoad,但除非从新更改的 NSArray 更新表,否则表将像更改之前一样显示。

所以我的问题是如何从 Second 调用表方法,以便在删除 Second 并返回 First 时更新 First 中的表。我曾尝试调用将数据加载到表中的表方法,但由于出现编译错误,因此没有成功。我需要知道如何调用 table 函数,当我返回到 first 时会导致 table 被更新。

至少我的部分问题是我不知道如何调用表更新,因为它没有像我预期的那样从 viewDidLoad 调用。

抱歉,这是对问题的冗长描述。我正在编写的程序的大部分其余部分都在工作,我已经处理这个问题好几个月了。我每隔几周就会回来一次,然后再试一次,但到目前为止还没有运气。我真的很感谢您提供的任何帮助,这将提高我的理解并解决问题。

这是修复后的代码:第一个(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];  
4

2 回答 2

0

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

[tableview reloadData];

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

于 2012-06-20T14:20:35.507 回答
0

你读过UIViewController API 参考吗?除了 -viewDidLoad 之外,还有更多选项可用于处理视图的(重新)外观......

于 2012-06-18T18:48:39.790 回答