gpt4 book ai didi

ios - 带有 xib 的自定义 UIView 中的 UIImageView 导出 nil

转载 作者:行者123 更新时间:2023-11-28 07:33:02 26 4
gpt4 key购买 nike

我已经创建了一个自定义 UIView,其中包含多个 IBOutlet,包括一个 UIImageView 和三个 UILabel。尽管在 awakeFromNib() 函数中设置了图像值,但在尝试设置时我仍然得到了 socket 的 nil 值。 UIView 是使用自定义 xib 文件构建的。

我将设置操作放在 awakeFromNib() 中,以确保 socket 在设置之前已经初始化,但这并没有帮助。我不确定这是否是 xib 文件的问题,因为我只在制作自定义表格单元格时使用过自定义 xibs,所以问题可能根源于此?

class VotingCard: UIView {
@IBOutlet weak var proPicImg: UIImageView!
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var hometownLabel: UILabel!
@IBOutlet weak var ratingLabel: UILabel!

var proPic = UIImage()
var name = ""
var hometown = ""
var rating = 0.0

init(pic: UIImage, rush: Rush) {
proPic = pic
name = rush.fullName
hometown = rush.homeTown
rating = rush.compositeRating
super.init(frame: CGRect(x: 0, y: 0, width: 250, height: 300))
}

override func awakeFromNib() {
proPicImg.image = proPic
nameLabel.text = name
hometownLabel.text = hometown
ratingLabel.text = "\(rating)"
}

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

我应该查看一张带有个人资料图片和相应数据的简单卡片,但它却崩溃了。

最佳答案

你的问题是

1-imageView 未连接到 Ib ,修复方法是连接它

或者

2- 您使用 init(pic: UIImage, rush: Rush) { 创建了一个 View 对象,并且肯定不会用 view 加载 UI,因此所有 outlet 都是 nil ,以及添加此方法的修复

class func getInstance(_ pic: UIImage, rush: Rush) -> VotingCard { 
let v = Bundle.main.loadNibNamed("VotingCard", owner: self, options: nil)!.first as! VotingCard
v.proPic = pic
v.name = rush.fullName
v.hometown = rush.homeTown
v.rating = rush.compositeRating
return v
}

打电话

let v = VotingCard.getInstance(<#image#>,rush:<#rush#>)
v.frame = // set some frame
// ready for use

关于ios - 带有 xib 的自定义 UIView 中的 UIImageView 导出 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54118312/

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