每次要对数据进行排序时,是否必须创建新的视图控制器?

时间:2015-01-31 00:21:36

标签: ios objective-c uitableview sorting

我不确定如何标题,甚至不知道如何开始查找。我需要一些好人的建议。我已经在线完成了一些研究,但我遇到的所有教程和建议都在viewDidLoad中进行了分类。

我有一个查看另一个tableview的tableview。第一个tableview填充了硬编码数组,如下所示:

单元格0:按标题查看列表
单元格1:作者查看列表
单元格2:按日期查看列表

" segueing"在第二个tableview中,我可以使用viewDidLoad中的NSSortDescriptor按标题,作者或日期对结果进行排序。我目前设置的方式,似乎每次我想要按某个参数(即标题,作者,日期)排序时,我将需要创建一个新的视图控制器。有没有不同的方法我可以这样做,所以我可以重用第二个tableview,而不必为每种排序创建一个新的?参数不仅仅是我提到的三个参数。故事板会很快混乱。

正在排序的信息来自自定义类,如果这会产生影响。

任何帮助都会受到赞赏,即使事实证明我每次要排序时都必须创建新的视图控制器。我只是希望有另一种选择。

以下是viewDidLoad的代码段:

 NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
    self.dataSource = [[self.dataSource sortedArrayUsingDescriptors:[NSArray arrayWithObjects:descriptor, nil]] mutableCopy];

以下是来自 didSelectRow

的代码
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    NavigationController *navigationController = [self.storyboard instantiateViewControllerWithIdentifier:@"contentController"];

    if (indexPath.section == 0 && indexPath.row == 0)
    {
        ListTableViewController *listController = [self.storyboard instantiateViewControllerWithIdentifier:@"listController"];
        navigationController.viewControllers = @[listController];
    }

    self.frostedViewController.contentViewController = navigationController;
    [self.frostedViewController hideMenuViewController];
}

1 个答案:

答案 0 :(得分:0)

不需要单独的视图控制器。您需要将一些信息传递给第二个控制器,告诉它您要排序的内容。可能会传递其中一个字符串," title"," author",或" date"。在第二个控制器中,使用基于字符串传递的if-else子句来决定排序方式,进行排序,然后重新加载表。