Ответ
UITableView — это компонент UIKit для отображения прокручиваемых списков данных, организованных в виде строк (ячеек) и, опционально, секций.
Основные компоненты:
- Ячейки (UITableViewCell): Отображают контент строки. Система переиспользует ячейки для эффективного управления памятью.
- DataSource (UITableViewDataSource): Протокол, предоставляющий данные для отображения (количество строк, ячейки).
- Delegate (UITableViewDelegate): Протокол, обрабатывающий взаимодействия (выбор строки, высота ячеек).
Базовый пример реализации:
class ViewController: UIViewController, UITableViewDataSource {
let data = ["Item 1", "Item 2", "Item 3"]
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableView.register(UITableViewCell.self, forCellReuseIdentifier: "Cell")
tableView.dataSource = self
}
// Обязательные методы DataSource
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return data.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
// Переиспользование ячейки
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
cell.textLabel?.text = data[indexPath.row]
return cell
}
}
Современные альтернативы:
- Diffable Data Source (iOS 13+): Автоматически управляет состояниями и анимациями списка.
- UICollectionView: Более гибкий компонент для сложных сеток и макетов.
Ключевая оптимизация: Всегда используйте
dequeueReusableCell(withIdentifier:for:)для переиспользования ячеек.