gpt4 book ai didi

swift - 无法更新 UICollectionView 单元格中的标签 (Swift)

转载 作者:行者123 更新时间:2023-11-28 13:13:06 24 4
gpt4 key购买 nike

我的应用程序在 ContainerView 中有一个 UICollectionViewController,我无法更改/更新任何自定义单元格中的标签。我的 viewDidLoad 函数加载只是加载一个数组,其中包含 5 个包含图像和标签的自定义对象实例。这将在稍后用作我的数据源。

override func viewDidLoad()
{
super.viewDidLoad()

// Uncomment the following line to preserve selection between presentations
//self.clearsSelectionOnViewWillAppear = false

// Register cell classes
//self.collectionView!.registerClass(MyCollectionViewCell.self, forCellWithReuseIdentifier: reuseIdentifier)

// Do any additional setup after loading the view.
self.collectionView!.allowsMultipleSelection = true;

//UICollectionView setup
let singleImage = UIImage(named: "IMG_0800.jpg")
let imageName = "Original"

for var i=0; i<5; i++
{
let vehicleObject = VehicleObject(image: singleImage!, label: imageName)
arrayOfVehicles.append(vehicleObject)
}
}

此方法似乎有效,但部分有效。当应用程序运行时确实显示了五张图片,但标签仍然显示“标签”,这是 Storyboard原型(prototype)的默认值,但 Storyboard中的默认照片被替换为我在 viewDidLoad 函数中加载的照片。

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
{
//Configure the cell
let cell = collectionView.dequeueReusableCellWithReuseIdentifier(reuseIdentifier, forIndexPath: indexPath) as! MyCollectionViewCell

cell.backgroundColor = UIColor .blackColor()
cell.selectedBackgroundView = UIView(frame: CGRectMake(0, 0, 300, 300))
cell.selectedBackgroundView?.backgroundColor = UIColor .redColor()

cell.imageView.image = arrayOfVehicles[indexPath.row].vehicleImage
cell.imageLabel = arrayOfVehicles[indexPath.row].vehicleLabel

return cell
}

最后,此方法对单元格中的 UILabel 完全没有影响。当它运行时,println 调用显示的正是我所期望的(更新后的值),但 Collection View 单元格中的标签根本没有更新。它始终与 Storyboard 中初始化的内容相同。图像更新,标签没有。我已经用完了 Internet 搜索这个!

func renameAllCellLabels()
{
var selectedItemsIndexPaths = collectionView?.indexPathsForVisibleItems()
for var i=0; i < selectedItemsIndexPaths?.count; i++
{
let selectedItemIndexPath = selectedItemsIndexPaths?[i] as! NSIndexPath
let cell = collectionView?.cellForItemAtIndexPath(selectedItemIndexPath) as! MyCollectionViewCell

let singleImage = UIImage(named: "Shelby.jpg")

let i = selectedItemIndexPath.row
println(i)
println(arrayOfVehicles[i].vehicleLabel.text)
println(cell.imageLabel.text)

arrayOfVehicles[i].vehicleLabel.text = "Updated"
cell.imageLabel.text = "Updated"

arrayOfVehicles[i].vehicleImage = singleImage
cell.imageView.image = singleImage

println(arrayOfVehicles[i].vehicleLabel.text)
println(cell.imageLabel.text)
println()
}
collectionView?.reloadItemsAtIndexPaths(selectedItemsIndexPaths!)
}

最佳答案

您应该使用数据模型中的信息更新现有标签,而不是每次都创建一个新标签:

cell.imageLabel.text = // The text…

关于swift - 无法更新 UICollectionView 单元格中的标签 (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30515842/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com