以编程方式更新UITableView以响应按钮按下
我有一个完全自定义的视图,其中包含一个UITableView和一个自定义选项卡栏(基本上是一个包含6个UIButtons的UIView) 我从plist文件加载数据,然后根据类别将数据排序到多个数组中(一个用于杂项项目的数组,一个用于邮件项目的数组,等等) 选项卡栏中的每个按钮代表一个类别,当我按下按钮时,我调用自定义函数“miscSelected”,以此类推 如何让表视图完全重新加载,然后根据选定的数组显示表视图(选择杂项类别,表视图将清除自身并加载杂项数组数据,与任何其他类别相同) 我试验过的方法是创建一个名为“selection”的字符串,然后在每个按钮函数中,我将selected设置为等于我选择的任何部分。在我的cellForRoxAtIndexPath方法中,我有:以编程方式更新UITableView以响应按钮按下,uitableview,Uitableview,我有一个完全自定义的视图,其中包含一个UITableView和一个自定义选项卡栏(基本上是一个包含6个UIButtons的UIView) 我从plist文件加载数据,然后根据类别将数据排序到多个数组中(一个用于杂项项目的数组,一个用于邮件项目的数组,等等) 选项卡栏中的每个按钮代表一个类别,当我按下按钮时,我调用自定义函数“miscSelected”,以此类推 如何让表视图完全重新加载,然后根据选定的数组显示表视图(选择杂项类别,表视图将清除自身并加载杂项数组数据,与任何其他类别相同) 我试验过
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也没有任何作用
任何帮助都会很好,谢谢 所以我花了相当长的时间寻找更多的答案。对于任何想知道的人来说,这只是一小段代码,如下所示:
[self.myTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
现在效果很好