gpt4 book ai didi

ios - 使用其他类的 UIView 函数会导致崩溃

转载 作者:行者123 更新时间:2023-11-28 16:16:36 25 4
gpt4 key购买 nike

我相信这个问题已经被问过一百万次了。但我的搜索不断提出 objective-c 解决方案。

我正在从另一个类调用 UIViewController 类。我希望它更新屏幕。当从 ViewController 调用该函数时,它工作正常。但是当它被另一个类调用时,它会崩溃:

tempImageView.image?.drawInRect(CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))

说解包的可选返回 nil。 tempImageView 是 UIViewController 中 UIImageView 的一个导出。我想我不清楚外部类函数调用是如何工作的。有谁知道解决方案吗?

编辑:

class ViewController: UIViewController, NSURLSessionDelegate {
var lastPoint = CGPoint.zero
var red: CGFloat = 0.0
var green: CGFloat = 0.0
var blue: CGFloat = 0.0
var brushWidth: CGFloat = 10.0
var opacity: CGFloat = 1.0
var swiped = false
var xArray = [CGFloat]()
var yArray = [CGFloat]()
var scale: CGFloat = 0.0
@IBOutlet weak var mainImageView: UIImageView!
@IBOutlet weak var tempImageView: UIImageView!
......
func drawLineFrom(fromPoint: CGPoint, toPoint: CGPoint) {

// 1
UIGraphicsBeginImageContext(self.view.frame.size)
let context = UIGraphicsGetCurrentContext()
tempImageView.image?.drawInRect(CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size.height))

// 2
CGContextMoveToPoint(context, fromPoint.x, fromPoint.y)
CGContextAddLineToPoint(context, toPoint.x, toPoint.y)

// 3
CGContextSetLineCap(context, .Round)
CGContextSetLineWidth(context, brushWidth)
CGContextSetRGBStrokeColor(context, red, green, blue, 1.0)
CGContextSetBlendMode(context, .Normal)

// 4
CGContextStrokePath(context)

// 5
self.tempImageView.image = UIGraphicsGetImageFromCurrentImageContext()
self.tempImageView.alpha = opacity
UIGraphicsEndImageContext()

}

还有来自其他 Controller 的调用

func getChatMessage() {
socket.on("browser") { (dataArray, socketAck) -> Void in
for _ in dataArray {
ViewController().drawLineFrom(CGPoint(x: 0,y: 0), toPoint: CGPoint(x: 1,y: 1))
}
}
}

最佳答案

您正在初始化一个新的 ViewController 并试图立即对它做一些事情。由于多种原因表明您可能是初学者,这将行不通。 (欢迎!)您要么需要查看 UIViewControllers 的工作方式(特别是生命周期),要么需要查看对象的工作方式:)

关于ios - 使用其他类的 UIView 函数会导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39006823/

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