gpt4 book ai didi

ios - 在 super.init 初始化 self 之前在属性访问 'self' 中使用 'frame'

转载 作者:搜寻专家 更新时间:2023-10-30 23:05:23 58 4
gpt4 key购买 nike

我有这个代码

import UIKit

class CardView: UIView {

@IBOutlet var imageView: UIImageView!

init(imageView: UIImageView) {
self.imageView = imageView
super.init(frame: CGRect(x: 0, y:0, width: self.frame.size.width, height: self.frame.size.height))
}

required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}

}

我在行中收到错误:

super.init(frame: CGRect(x: 0, y:0, width: self.frame.size.width, height: self.frame.size.height))

错误提示 在 super.init 初始化 self 之前在属性访问“frame”中使用“self”

我不知道如何解决这个问题。

请记住,我来自 objective - C 背景,最近开始学习 swift。

最佳答案

init() 方法中访问 self 之前必须调用 super.init():

init(imageView: UIImageView) {
self.imageView = imageView /*you are accessing self here before calling super init*/
super.init(frame: CGRect(x: 0, y:0, width: self.frame.size.width /* here also*/, height: self.frame.size.height))
}

将其更改为:

init(imageView: UIImageView) {
super.init(frame: CGRect(origin: CGPoint.zero, size: imageView.frame.size))
self.imageView = imageView
}

关于ios - 在 super.init 初始化 self 之前在属性访问 'self' 中使用 'frame',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41779219/

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