Всем добрый день! С наступающим Новым годом!
В шишки избился. Подскажите как реализовать следующее имеется класс который генерирует панель с UIButton.
class DayPickerView: UIControl {
public weak var dateSource: DayPickerViewDateSource? {
didSet {
setupView()
}
}
private var buttons: [UIButton] = []
private var stackView: UIStackView!
override func layoutSubviews() {
super.layoutSubviews()
stackView.frame = bounds
}
func setupView() {
let count = dateSource?.dayPickerCount(self)
for item in 0..<count! {
let indexPath = IndexPath(row: item, section: 0)
let title = dateSource?.dayPickerTitle(self, indexPath: indexPath)
let button = UIButton(type: .system)
button.tag = item
button.setTitle(title, for: .normal)
button.setTitleColor(.black, for: .normal)
button.setTitleColor(.white, for: .selected)
button.titleLabel?.font = UIFont.boldSystemFont(ofSize: 10)
button.addTarget(delegate, action: #selector(delegate?.selectedButton(sender:)), for: .touchUpInside)
button.titleLabel?.numberOfLines = 0
buttons.append(button)
self.addSubview(button)
}
stackView = UIStackView(arrangedSubviews: buttons)
self.addSubview(stackView)
stackView.spacing = 8
stackView.axis = .horizontal
stackView.distribution = .fillEqually
stackView.alignment = .center
}
}
extension DayPickerView {
@objc func selectedButton(sender: UIButton) {
for b in buttons {
b.isSelected = false
}
let index = sender.tag
let button = self.buttons[index]
button.isSelected = true
}
}
Нужно передать tag UIBuuton let index = sender.tag в запрос который из интернета получает данные
class SheduleNetworkService: SheduleNetworkServiceProtocol {
func getShedule(complition: @escaping (Result<Schedule?, Error>) -> ()) {
guard let url = URL(string: "https://xxx/api/schedule?dateStart=\(calendars[0])&dateEnd=\(calendars[0])") else { return }
NetworkService.shared.getData(url: url, decod: Schedule.self) { json in
switch json {
case .success(let schedule):
complition(.success(schedule as? Schedule))
case .failure(let error):
print(error.localizedDescription)
}
}
}
}
тег это index для calendars[0] который по дате формирует запрос