Что такое UITableView в iOS?

«Что такое UITableView в iOS?» — вопрос из категории UIKit, который задают на 10% собеседований IOS Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

UITableView — это компонент UIKit для отображения прокручиваемых списков данных, организованных в виде строк (ячеек) и, опционально, секций.

Основные компоненты:

  1. Ячейки (UITableViewCell): Отображают контент строки. Система переиспользует ячейки для эффективного управления памятью.
  2. DataSource (UITableViewDataSource): Протокол, предоставляющий данные для отображения (количество строк, ячейки).
  3. 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:) для переиспользования ячеек.