gpt4 book ai didi

ios - 将参数传递给 Swift 3 中的 UIView 子类

转载 作者:搜寻专家 更新时间:2023-11-01 07:17:13 25 4
gpt4 key购买 nike

我正在尝试将参数传递给 UIView 子类。我的代码似乎有效,但在初始化后所有参数都变为 nil:当在 draw 函数中调用 lineWidth(参数之一)时出现此错误:

"fatal error: unexpectedly found nil while unwrapping an Optional value"

这是我的 viewController 代码:

import UIKit

class ViewController: UIViewController,UIGestureRecognizerDelegate,UIScrollViewDelegate {
@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var matrixView = UIMatrixView(mat: [[Bool]](),gRows:20,gCols:20,lWidth:2)

override func viewDidLoad() {
super.viewDidLoad()
// scrollView.delegate = self
}

func viewForZooming(in scrollView: UIScrollView) -> UIView? {
return self.matrixView
}
}

这是针对 UIView 子类的:

import UIKit

class UIMatrixView: UIView {
var matrix : [[Bool]]!
var gridRows : Int!
var gridCols : Int!
var lineWidth : Int!

init(mat: [[Bool]], gRows : Int, gCols : Int, lWidth : Int){
print("here")
self.matrix=mat
self.gridRows=gRows
self.gridCols=gCols
self.lineWidth=lWidth
super.init(frame: CGRect())
print(lineWidth)
}

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

// Only override draw() if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func draw(_ rect: CGRect) {
print(lineWidth)
}
}

最佳答案

标记为弱属性的自定义 UIView。

在代码中创建后不会保留对其的强引用。

标有IBOutlet的属性可以在Storyboard中设置。

否则,添加后设置弱引用为 subview (addSubview):

func appendMatrixView() {
let mView = MatrixView(...
//Important lines.....
addSubview(mView)
self.matrixView = mView;
}

关于ios - 将参数传递给 Swift 3 中的 UIView 子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41525801/

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