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

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

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

要显示的结果

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

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

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

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

【问题讨论】:

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

标签: ios objective-c uitableview core-data nspredicate


【解决方案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];

【讨论】:

    猜你喜欢
    • 2012-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-11
    • 1970-01-01
    • 2020-07-19
    相关资源
    最近更新 更多