/
sberpay
/
AgeGate-iOS
Обзор
Документация
Войти
/
sberpay
/
AgeGate-iOS
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
develop
AgeGateExample/Presentation/ConfigModule/Cells/SegmentedControlCell.swift
73 строки
2 KB
SergeyGladkiy
[0.2.0] БДСЧ сценарий
30 июл 2026, 21:57
30 июл 2026, 21:57
cbcdfcb
Код
Авторство
О чём код?
// // SegmentedControlCell.swift // AgeGateExample // // Created by Гладкий Сергей Игоревич on 24.07.2026. // import UIKit final class SegmentedControlCell: UITableViewCell { private var valueChanged: ((Int) -> Void)? private lazy var titleLabel: UILabel = { let view = UILabel() view.textColor = .secondaryLabel view.font = .systemFont(ofSize: 13, weight: .medium) return view }() private lazy var segmentedControl: UISegmentedControl = { let view = UISegmentedControl() view.addTarget(self, action: #selector(segmentChanged), for: .valueChanged) return view }() private lazy var stackView: UIStackView = { let view = UIStackView(arrangedSubviews: [titleLabel, segmentedControl]) view.axis = .vertical view.spacing = 8 view.translatesAutoresizingMaskIntoConstraints = false return view }() override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) selectionStyle = .none setupUI() } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } func config(title: String, items: [String], selected: Int, valueChanged: @escaping (Int) -> Void) { titleLabel.text = title segmentedControl.removeAllSegments() items.enumerated().forEach { index, item in segmentedControl.insertSegment(withTitle: item, at: index, animated: false) } segmentedControl.selectedSegmentIndex = selected self.valueChanged = valueChanged } @objc private func segmentChanged() { valueChanged?(segmentedControl.selectedSegmentIndex) } private func setupUI() { contentView.addSubview(stackView) NSLayoutConstraint.activate([ stackView.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 8), stackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 16), stackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -16), stackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -8) ]) } }