Как отправить данные из нажатия кнопки в представлении uicollection внутри всплывающего окна в ячейку таблицы в контроллере основного представления?
У меня есть UITableView с пользовательскими ячейками.Когда я нажимаю «1» внутри ячейки, появляется всплывающее окно.Всплывающее окно использовало UIView с UICollectionView в качестве подпредставления.Внутри представления коллекции находятся пользовательские ячейки, каждая из которых имеет кнопку.Желаемое поведение - нажать кнопку во всплывающем окне и заставить эту кнопку выполнить функцию через делегата и установить заголовок кнопки для кнопки внутри пользовательского UITableViewCell в контроллере основного представления.
MainViewController:
import UIKit
class MainViewController: UIViewController, UITableViewDataSource, UITableViewDelegate, ListItemCellDelegate, PopoverCellDelegate {
...
func setPriority(buttonTitle: String) {
print("Button Pressed")
}
PopoverCell:
import UIKit
import Foundation
protocol PopoverCellDelegate: class {
func setPriority(buttonTitle: String)
}
class PopoverCell: UICollectionViewCell {
weak var delegate: PopoverCellDelegate?
let cellView: UIView = {
let view = UIView()
view.backgroundColor = UIColor.white
view.setCellShadow()
return view
}()
let priorityButton: UIButton = {
let button = UIButton(type: .custom)
// button.setImage(UIImage(named: "UnChecked"), for: .normal)
// button.setImage(UIImage(named: "Checked"), for: .selected)
button.frame = CGRect(x: 0, y: 0, width: 60, height: 60)
button.setTitleColor(.black, for: .normal)
button.backgroundColor = UIColor.white
button.layer.borderWidth = 2
button.layer.borderColor = UIColor.black.cgColor
button.titleLabel?.font = UIFont.init(name: "Avenir Next", size: 24)
return button
}()
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func prepareForReuse() {
super.prepareForReuse()
self.delegate = nil
}
override init(frame: CGRect) {
super.init(frame: frame)
setupCell()
priorityButton.addTarget(self, action: #selector(setPriority), for: .touchUpInside)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
func setupCell() {
cellView.translatesAutoresizingMaskIntoConstraints = false
priorityButton.translatesAutoresizingMaskIntoConstraints = false
addSubview(cellView)
cellView.addSubview(priorityButton)
cellView.heightAnchor.constraint(greaterThanOrEqualToConstant: 60).isActive = true
cellView.setAnchor(top: topAnchor, left: leftAnchor, bottom: bottomAnchor, right: rightAnchor, paddingTop: 8, paddingLeft: 4, paddingBottom: 8, paddingRight: 4)
priorityButton.setAnchor(top: cellView.topAnchor, left: cellView.leftAnchor, bottom: cellView.bottomAnchor, right: cellView.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 60, height: 60)
priorityButton.centerXAnchor.constraint(equalTo: cellView.centerXAnchor).isActive = true
}
@objc private func setPriority() {
if let title = priorityButton.currentTitle {
print(title)
self.delegate?.setPriority(buttonTitle: title)
}
}
}