我有一个完全自定义的视图,它包含一个UITableView和一个自定义标签栏(基本上是一个包含6个UIButtons的UIView)。
我正在从plist文件加载数据,然后我根据类别(misc项目的数组和邮件项目的数组等)将数据分类到多个数组中。
标签栏中的每个按钮代表一个类别,当我按下按钮时,我调用自定义功能“miscSelected”,依此类推。
如何让表视图完全重新加载,然后根据所选数组显示tableview(选择misc类别,tableview清除自身并加载misc数组数据,对于任何其他类别都一样)?
我创建的方法被创建,NSString被命名为“selection”,然后在我设置的每个按钮函数中设置为等于我选择的任何部分。在我的cellForRoxAtIndexPath方法中,我有这个:
if ([self.selection isEqualToString:@"All Items"]) {
NSArray *mainDataArray = [NSArray arrayWithContentsOfFile:self.plistFile];
NSSortDescriptor *brandDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:brandDescriptor];
self.sortedData = [mainDataArray sortedArrayUsingDescriptors:sortDescriptors];
}
else if ([self.selection isEqualToString:@"Misc Items"]){
self.sortedData = [NSArray arrayWithContentsOfFile:self.plistFile];
}
cell.itemTitle.text = [[self.sortedData objectAtIndex:indexPath.row] objectForKey:@"name"];
为了示例和测试,我只是显示相同的数据,只有一个按钮按字母顺序显示,另一个按钮不显示。
此代码仅在我开始向下滚动和备份时起作用,但在按下按钮时实际上不会更新。调用myTable reloadData也没有做任何事情。
任何帮助都会很棒,谢谢!
答案 0 :(得分:1)
所以我花了很多时间看更多,我找到了解决方案。对于任何想要了解的人来说,这是一小段代码:
[self.myTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
现在完美运作!