以编程方式更新UITableView以响应按钮按

时间:2012-11-11 09:33:08

标签: uitableview

我有一个完全自定义的视图,它包含一个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也没有做任何事情。

任何帮助都会很棒,谢谢!

1 个答案:

答案 0 :(得分:1)

所以我花了很多时间看更多,我找到了解决方案。对于任何想要了解的人来说,这是一小段代码:

[self.myTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];

现在完美运作!