【发布时间】:2012-06-18 17:26:27
【问题描述】:
我使用的是 Xcode 4.3,虽然我已经做了很多年的程序员,但我在 Xcode 中有点像个笨蛋。
我有一个名为 First 的 UIView,它包含一个从内存中的文件获取其内容的 UITable。然后,我创建了一个名为 Second 的子视图 UIView,它对数据文件进行了更改,这些更改应该会更改 First 中表的内容。当我删除 Second 并返回 First 时,这并不奇怪,表没有更新。下次从头开始加载 First 时,该表会反映所做的更改。
First 包含方法 viewDidLoad,该方法用于从文件中的数据中加载 NSArray 以及表所需的数据。我可以从 Second 调用 viewDidLoad,但除非表是从新更改的 NSArray 更新的,否则表将显示为与更改之前一样。
所以我的问题是如何从 Second 调用表方法,以便在删除 Second 并返回 First 时更新 First 中的表。我曾尝试调用将数据加载到表中的表方法,但由于出现编译错误,因此没有成功。我需要知道如何调用 table 函数,以在我返回 first 时更新表格。
至少我的部分问题是我不知道如何调用表更新,因为它没有像我预期的那样从 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];
【问题讨论】:
标签: xcode4 subviews uitableview