gpt4 book ai didi

ios - 自定义 View 类中的 init coder 函数出现问题

转载 作者:行者123 更新时间:2023-11-29 01:30:33 25 4
gpt4 key购买 nike

我正在尝试以编程方式将来自自定义 View 类的 View 放置在我的主视图 Controller 上。这是我的代码:

import UIKit

class BarControl: UIView {

// MARK: Initialization

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

let button = UIButton(frame: CGRect(x: 0, y: 0, width: 44, height: 44))
button.backgroundColor = UIColor.redColor()
button.addTarget(self, action: "ratingButtonTapped:", forControlEvents: .TouchDown)
addSubview(button)

}

override func intrinsicContentSize() -> CGSize {
return CGSize(width: 240, height: 44)
}


}

在我的主视图 Controller 中:

 let myView = BarControl()

出现错误“调用中缺少参数‘coder’的参数”

let myView = BarControl()的括号里应该填什么?

最佳答案

当我将 UIView 子类化时,我总是重写 init(frame: CGRect) 并添加任何额外的实现。然后 xcode 通常会告诉你 - 'required': 初始化程序 'init(coder:)' 必须由 'UIView' 的子类提供,如果你单击该错误并按回车键,它会自动添加额外的初始化程序。好吧,我一直在这样做,但没有完全理解为什么我必须添加我从未使用过的额外初始化程序。你的问题终于让我找到了原因。我在以下链接中找到了有关此初始化程序混淆(?)的好教程。

http://www.edwardhuynh.com/blog/2015/02/16/swift-initializer-confusion/

这是一篇关于你困惑的短文(?) =)

基本上你的问题的答案是你应该覆盖 init () 来调用 BarControl() 而不是 init(coder aDecoder: NSCoder!)。此外,您必须添加所有 UIView 的初始化程序才能根据文章使用您想要使用的初始化程序。

关于ios - 自定义 View 类中的 init coder 函数出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33515779/

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