iOS开发自定义UITableView索引
2018-03-19 本文已影响1695人
0陈健0
使用SectionIndexView自定义UITableView索引,项目的demo里面提供了全面的演示。
效果预览:
image image image image image使用方式与使用UITableView的方式极其类似
1.首先创建SectionIndexView
override func viewDidLoad() {
indexView = SectionIndexView.init(frame:frame)
indexView.dataSource = self
indexView.delegate = self
view.addSubview(indexView)
indexView.loadData() // 需要手动调用一次loadData() 方法
}
2.实现代理方法SectionIndexViewDataSource
//SectionIndexView需要展示多少个数据
func numberOfItemViews(in sectionIndexView: SectionIndexView) -> Int {
return indexData.count
}
//返回SectionIndexView的itemView, (类似于UITableViewCell)
//每个itemView的高度会平分SectionIndexView的高度
func sectionIndexView(_ sectionIndexView: SectionIndexView, itemViewAt section: Int) -> SectionIndexViewItem {
let itemView = SectionIndexViewItem.init()
itemView.title = indexData[section]
return itemView
}
//当点击SectionIndexViewItem时,展示的预览图 SectionIndexViewItemPreview
//若不需要预览图,则无需实现
func sectionIndexView(_ sectionIndexView: SectionIndexView, itemPreviewFor section: Int) -> SectionIndexViewItemPreview {
let preview = SectionIndexViewItemPreview.init(title: indexData[section], type: .default)
return preview
}
3.根据需要实现代理方法SectionIndexViewDelegate
//当点击SectionIndexViewItem后的回调
func sectionIndexView(_ sectionIndexView: SectionIndexView, didSelect section: Int)
//当在SectionIndexView上移动时的回调
func sectionIndexView(_ sectionIndexView: SectionIndexView, toucheMoved section: Int)
//移动取消的回调
func sectionIndexView(_ sectionIndexView: SectionIndexView, toucheCancelled section: Int)