Sobes.tech
Back to questions
Junior — Middle
74

Как отличаются компоненты StackView и TableView в разработке интерфейсов?

Companies where asked
СБЕР Бизнес
Летуаль

Answer from AI

sobes.tech AI

StackView и TableView — это разные компоненты для построения интерфейсов в iOS, которые служат разным целям:

  • UIStackView — это контейнер для компоновки дочерних вью в горизонтальном или вертикальном направлении. Он автоматически управляет расположением и размером вложенных элементов, упрощая создание адаптивных интерфейсов без необходимости писать много кода для constraints.

  • UITableView — это компонент для отображения большого списка однотипных данных в виде таблицы с возможностью переиспользования ячеек, прокрутки и динамического обновления. Он требует реализации datasource и delegate для управления содержимым и поведением.

Пример использования UIStackView:

let stackView = UIStackView(arrangedSubviews: [view1, view2, view3])
stackView.axis = .vertical
stackView.spacing = 10
stackView.distribution = .fillEqually
view.addSubview(stackView)
// Добавить constraints для stackView

Пример базового UITableView:

class MyViewController: UIViewController, UITableViewDataSource {
    let tableView = UITableView()
    let data = ["Item 1", "Item 2", "Item 3"]

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.dataSource = self
        view.addSubview(tableView)
        // Добавить constraints для tableView
    }

    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") ?? UITableViewCell(style: .default, reuseIdentifier: "cell")
        cell.textLabel?.text = data[indexPath.row]
        return cell
    }
}

Таким образом, StackView — для компоновки элементов, TableView — для отображения списков данных.