Sha*_* Of 5 objective-c uitableview ios swift
两个表必须位于一个视图控制器中,例如通过段控制进行切换.数据是无限的,从核心数据中获取.我看到三个解决方案:
1)创建两个对象UITableView并在共享数据源函数中填充它们; 保持其中一个tableviews隐藏
2)创建两个视图控制器容器,嵌入主视图控制器,并执行完全分离的数据源方法; 保持其中一个容器隐藏
3)仅使用一个表视图对象,在需要时重新加载数据,提供偏移量保存
需要你的意见.哪种解决方案更快,更可读,更正确?
更新
让我尝试实现第三种选择:
var tableViewOffsets = [Int: CGPoint]()
func segmentValueChanged(sender: UISegmentedControl) {
tableViewOffsets[tableView.tag] = tableView.contentOffset
tableView.tag = sender.selectedSegmentIndex
tableView.reloadData()
if let savedOffset = tableViewOffsets[tableView.tag] {
tableView.setContentOffset(savedOffset, animated: false)
}
}
func tableView_dataSourceMethodsTemplate(tableView: UITableView, ...) {
if tableView.tag == 0 {
//perform data source code for first tab
} else {
//perform data source code for second tab
}
}
Run Code Online (Sandbox Code Playgroud)
选项号third很简单,内存优化也很好,在我的建议中使用tagConcept with single tableView如果你选择任何段为你的tableview分配标签(例如yourtableview.tag = 1)并同时改变你需要的帧,
更新
func segmentValueChanged(sender: UISegmentedControl) {
tableViewOffsets[tableView.tag] = tableView.contentOffset
tableView.tag = sender.selectedSegmentIndex
var tablearray = [string]()
if sender.selectedSegmentIndex == 0
{
// here fecth the value in coredata and append in array
tablearray.append (yourdta)
}else
{
// here fecth the value in coredata and append in array
tablearray.append (yourdta)
}
if let savedOffset = tableViewOffsets[tableView.tag] {
tableView.setContentOffset(savedOffset, animated: false)
}
tableView.reloadData()
}
func tableView_dataSourceMethodsTemplate(tableView: UITableView, ...) {
return tablearray.count
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
860 次 |
| 最近记录: |