在一个 TableViewController 中显示两组结果

Posted

技术标签:

【中文标题】在一个 TableViewController 中显示两组结果【英文标题】:Displaying two sets of results in one TableViewController 【发布时间】:2015-04-25 18:05:56 【问题描述】:

我知道这是一个非常愚蠢的问题,但我想不通。每个答案都涉及一个 UISearchBar,这不是我所拥有的。

我正在尝试在一个 TableViewController 上显示 2 组结果。

要显示的结果

1) 一切在我的managedObjectContext 中,在我的viewDidLoad 中设置

2) 过滤后的结果集(如果选择了谓词)。

MyTableViewController 上,我有一个弹出框,当我在MyTableViewController 上单击UIBarButtonItem 时会实例化。在弹出框上,我在MyTableViewController 上设置了一个谓词。

基本上,我想切换显示的内容,该显示切换取决于我的变量是 nil(显示所有内容)还是已过滤(变量设置谓词)。

【问题讨论】:

您有问题吗? 你写的更多的是一个规范而不是一个问题。在我看来,这只是选择正确数据源的一种情况,可以是代表所有内容的数据源,也可以是仅包含您选择的项目子集的数据源。 我写了一个详细的问题,但我没有得到任何回复。以上是“诗人物理学”版本。这就是一切。 ***.com/questions/29856403/… 你可以添加这样的东西。采用 BOOL isSearchOn 变量类型,并在您的搜索栏有一些文本时将其设为 YES。在 cellForRowAtIndex 方法中,只需执行 if(isSearchOn) else 。行数或节数相同 【参考方案1】:

有两个 NSArray 属性 allValuesfilteredValues。使用 filteredValues 数组设置所有委托/数据源属性。

接下来,当您第一次获取所有数据时,请执行以下操作:

self.allValues = [someController fetchAllValues];
self.filteredValues = self.allValues;
[self.myView.tableView reloadData];

最后,无论是否选择了谓词,都改变你的filteredValues 数组:

if (self.selectedPredicate) 
    self.filteredValues = [self.allValues filteredArrayUsingPredicate:self.selectedPredicate];
 else 
    self.filteredValues = self.allValues;

[self.myView.tableView reloadData];

【讨论】:

以上是关于在一个 TableViewController 中显示两组结果的主要内容,如果未能解决你的问题,请参考以下文章

在 TableViewController 中呈现嵌套数组

倒带时自动重新加载 TableViewController

Swift - 在自定义 TableViewController 中出现 SearchBar 问题

在 uipopovercontroller 中推送一个新的 tableViewController 会导致调整弹出框的大小

在 TableViewController Swift 中调整 TableView 的大小

两个 NSFetchResultControllers ,一个 TableViewController