swift 封装UITableview 以及 UICollectionView
时间: 2023-09-14 12:08:18 浏览: 280
好,关于 Swift 封装 UITableView 和 UICollectionView 的问题,我可以给你一些基本的介绍。
首先,UITableView 和 UICollectionView 都是 iOS 平台中常用的视图控件,用于展示列表和网格等数据。在 Swift 中,我们可以通过继承 UITableView 和 UICollectionView 类来自定义我们自己的表格和网格视图。
下面是一个简单的示例代码,展示如何封装 UITableView:
```swift
import UIKit
class MyTableView: UITableView, UITableViewDataSource, UITableViewDelegate {
var data: [String] = []
override init(frame: CGRect, style: UITableView.Style) {
super.init(frame: frame, style: style)
self.dataSource = self
self.delegate = self
// 注册单元格
self.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
// UITableViewDataSource 协议方法
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.data.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = self.data[indexPath.row]
return cell
}
// UITableViewDelegate 协议方法
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("选中了第 \(indexPath.row) 行")
}
}
```
在这个示例代码中,我们自定义了一个名为 `MyTableView` 的类,继承自 `UITableView`。我们在 `init` 方法中设置了数据源和代理,并注册了一个单元格类型。在 `UITableViewDataSource` 和 `UITableViewDelegate` 协议方法中,我们实现了表格的行数、单元格内容和选中事件的处理。
类似地,我们也可以使用类似的方式封装 UICollectionView。需要注意的是,UICollectionViewDelegate 和 UICollectionViewDataSource 两个协议方法和 UITableView 中的函数名和实现方式略有不同,需要根据实际情况来进行调整。
希望这个简单的示例代码可以对你有所帮助。如果你有其他关于 Swift 的问题,欢迎随时提出!
阅读全文