Swift - выбрать изображение и метку для UICollectionViewCell - PullRequest
0 голосов
/ 30 октября 2019

прямо сейчас у меня есть collectionView, в котором я могу добавить ячейки, нажав «addCell».

enter image description here enter image description here

Моя цель состоит в том, чтобы, если пользователь коснулся «addCell», должно появиться представление, в котором пользователь может ввести заголовок для ячейки и выбрать изображение, например, так:

enter image description here

Есть идеи, как мне это понять?

class ContentCell: UICollectionViewCell {
let testImage: UIImageView = {
    let v = UIImageView()
    v.translatesAutoresizingMaskIntoConstraints = false
    v.backgroundColor = .cyan
    return v
}()

let testLabel: UILabel = {
    let v = UILabel()
    v.translatesAutoresizingMaskIntoConstraints = false
    v.text = "Test Label"
    v.font = UIFont(name: "Avenir Next-Bold", size: 18)
    v.textColor = .darkGray
    v.textAlignment = .center
    return v
}()

override init(frame: CGRect) {
    super.init(frame: frame)
    commonInit()
}

required init?(coder: NSCoder) {
    super.init(coder: coder)
    commonInit()
}

func commonInit() -> Void {

    contentView.addSubview(testLabel)
    contentView.addSubview(testImage)

    NSLayoutConstraint.activate([

        testImage.topAnchor.constraint(equalTo: contentView.topAnchor),
        testImage.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
        testImage.trailingAnchor.constraint(equalTo: contentView.trailingAnchor),
        testImage.heightAnchor.constraint(equalToConstant:150),

        testLabel.topAnchor.constraint(equalTo: testImage.bottomAnchor,constant: 1),
        testLabel.bottomAnchor.constraint(equalTo: contentView.bottomAnchor),
        testLabel.leadingAnchor.constraint(equalTo: contentView.leadingAnchor),
        testLabel.trailingAnchor.constraint(equalTo: contentView.trailingAnchor),
    ])
}

}

1 Ответ

0 голосов
/ 30 октября 2019

поэтому в didSelectItemAtIndexPath вы представляете контроллер представления для запроса изображения и заголовка изображения, а затем в этом контроллере представления вы объявляете обработчик делегата или завершения, который, когда пользователь нажимает «сделано» или «сохранить» в представленииКонтроллер, в котором они выбрали изображение и заголовок, затем вызывается обработчик делегата или завершения, а затем сообщает исходному контроллеру представления с ячейками добавить только что созданный элемент и перезагрузить collectionView. это довольно стандартный материал, и вам нужно научиться использовать этот же шаблон, поскольку большинство приложений используют один и тот же шаблон 100 раз для каждого приложения. Я могу показать вам из Objective-C, но не буду тратить свое время на то, чтобы показать, что это Свифт. ЛМК, если вам нужна дополнительная помощь. удачи

о да, и для дальнейшего использования лучше придерживаться делегирования, поскольку использование обработчиков завершения становится очень сложным, когда вы сталкиваетесь с случаями с вложенными завершениями и все еще должны поддерживать ослабленную, а затем усиленную ссылку на контроллер. после двух попыток ослабления и строгания «я» система начнет произвольно освобождать ваши контроллеры. Палка с делегацией.

...