【发布时间】:2016-06-26 15:59:56
【问题描述】:
我在导航栏中有一个带有分段控件的视图控制器,其中包含 3 个部分。所有三个部分都将显示完全相同类型的单元格,但数据会发生变化。拥有 3 个容器并隐藏/显示它们以匹配屏幕上应该显示的数据,还是应该用不同的数据重新加载表,效率更高?
【问题讨论】:
标签: ios xcode swift uitableview uicontainerview
我在导航栏中有一个带有分段控件的视图控制器,其中包含 3 个部分。所有三个部分都将显示完全相同类型的单元格,但数据会发生变化。拥有 3 个容器并隐藏/显示它们以匹配屏幕上应该显示的数据,还是应该用不同的数据重新加载表,效率更高?
【问题讨论】:
标签: ios xcode swift uitableview uicontainerview
用不同的数据重新加载表会更有效率。
你可以为每个委托方法做类似的事情:
斯威夫特版本
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
if segmentedControl.selectedSegmentIndex == 0 {
return favoris.count
} else if segmentedControl.selectedSegmentIndex == 1 {
return somethingElse.count
} else {
return somethingElse.count
}
}
Objective C 版本
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
if (segmentedControl.selectedSegmentIndex == 0)
return [favoris count];
else if (segmentedControl.selectedSegmentIndex == 1)
return [somethingElse count];
else
return [somethingElse count];
}
另一种方法是仅更改有关 segmentedControl 索引的源数组,这将避免使用所有 if 语句。
我在一些项目中使用了这种功能,我可以保证性能很好。
希望这会有所帮助!
【讨论】: