【问题标题】:Swift - pick image and label for UICollectionViewCellSwift - 为 UICollectionViewCell 选择图像和标签
【发布时间】:2020-02-25 19:18:08
【问题描述】:

现在我有一个 collectionView,我可以通过点击“addCell”在其中添加单元格。

我的目标是,如果用户点击“addCell”,应该会出现一个视图,用户可以在其中输入单元格的标题并选择如下图像:

知道如何实现这一点吗?

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),
    ])
}

}

【问题讨论】:

  • 这是你的全部代码吗?
  • Google“iOS 事件通信如委托”
  • 委托回调viewController,弹出一个modal获取需要的信息,然后创建cell。
  • @hecroge 这只是我单元格的代码,最终应该可以自定义
  • 你能发布你的整个代码吗?

标签: ios swift uicollectionview uiimageview uicollectionviewcell


【解决方案1】:

所以在didSelectItemAtIndexPath 中,您呈现视图控制器以请求图像图像和标题,然后在该视图控制器中您声明一个委托或完成处理程序,当用户在视图中按下“完成”或“保存”时控制器选择图像和标题,然后调用委托或完成处理程序,然后告诉带有单元格的原始视图控制器添加您刚刚创建的项目并重新加载 collectionView。这是非常标准的东西,并且您需要学习如何使用相同的模式,因为大多数应用程序每个应用程序使用相同的模式 100 次。我可以从 Objective-C 向您展示,但不会浪费我的时间来展示这是 Swift。 lmk 如果您需要更多帮助。祝你好运

哦,是的,为了将来的参考,最好坚持使用委托,因为当您遇到嵌套完成的情况并且仍然需要维护对控制器的弱化然后强化引用时,使用完成处理程序会变得非常棘手。在弱化和强化“自我”两级后,系统将开始随机释放您的控制器。坚持委托。

【讨论】:

  • 好吧,肯定需要看一些关于这个主题的教程。现在我的 `UICollectionView ` 没有didSelectItemAtIndexPathfunction
  • 你能看看我的最新问题吗?我现在有一个带有textfield 的弹出屏幕,但我真的不明白如何将textfield 链接到我的cell
  • @Chris 也许我只是链接到你同样的东西但是在objective-c中你明白了。我不会在swift中写这个,没有时间。稍后我会从我自己的代码中将其链接到您,以便您了解如何在 collectionviewcells 中操作从文本字段到 UISwitches 的任何字段类型并跟踪它们的数据,以便它保持在苹果应满足的单元重用要求的位置。这没有一个很好的来源,所以这对任何人都有帮助。以后再做吧
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-30
  • 1970-01-01
  • 2016-09-22
相关资源
最近更新 更多