0

我有一个完全自定义的视图,其中包含一个 UITableView 和一个自定义选项卡栏(基本上是一个包含 6 个 UIButtons 的 UIView)。

我正在从 plist 文件加载数据,然后根据类别将数据排序到多个数组中(杂项数组和邮件项数组等)

标签栏中的每个按钮都代表一个类别,当我按下按钮时,我调用自定义函数“miscSelected”等等。

如何让表格视图完全重新加载,然后根据所选数组显示表格视图(选择杂项类别,表格视图会自行清除并加载杂项数组数据,与任何其他类别相同)?

创建我尝试过的方法并将 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 也不做任何事情。

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

4

1 回答 1

1

所以我花了很多时间寻找更多,我找到了解决方案。对于任何可能想知道的人来说,这是一小段代码,如下所示:

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

现在完美运行!

于 2012-11-11T16:57:37.233 回答