【发布时间】:2019-06-04 17:03:19
【问题描述】:
我创建了一个自定义 UIView,其中包含多个 IBOutlets,包括一个 UIImageView 和三个 UILabels。尽管在 awakeFromNib() 函数中设置了图像值,但在尝试设置它时,我仍然得到插座的 nil 值。 UIView 是使用自定义 xib 文件构建的。
我将设置操作放在awakeFromNib() 中,以确保在设置插座之前已对其进行了初始化,但这没有帮助。我不确定是否是 xib 文件的问题,因为我在制作自定义表格单元格时只使用过自定义 xib,所以问题可能出在那儿?
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)
}
}
我应该查看一张包含个人资料图片和相应数据的简单卡片,但它却崩溃了。
【问题讨论】:
-
你是如何实例化你的视图的?
-
让 v = Bundle.main.loadNibNamed("VotingCard", owner: self, options: nil)!.first as! VotingCard,然后我用这个对象设置各种属性(不是 iboutlets 本身,而是它们所在位置的变量),在 awakeFromNib() 中我将出口值设置为这些变量的值
-
尝试创建一个新的 XIB 和类,不要使用旧的任何东西,意味着不要从头开始复制标签或图像之类的任何东西。
标签: ios swift xcode uiview xib