我在 Swift 应用程序中有一个 map 图钉标注的自定义类,它连接到一个 .xib 文件。当用户单击图钉并加载 View 时,我试图更改为 View 内标签的文本。这是我所拥有的:
import Foundation
import MapKit
class CustomCallout: UIView {
@IBOutlet weak var testLabel: UILabel!
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
testLabel.text = "test"
}
override func hitTest( point: CGPoint, withEvent event: UIEvent?) -> UIView? {
let viewPoint = superview?.convertPoint(point, toView: self) ?? point
//let isInsideView = pointInside(viewPoint, withEvent: event)
let view = super.hitTest(viewPoint, withEvent: event)
return view
}
override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
return CGRectContainsPoint(bounds, point)
}
}
我不断收到错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
突出显示此行:
testLabel.text = "test"
我如何让它工作?加载此标注 View 时如何更改 socket 的文本?
最佳答案
您可以引用:CustomView 您可以使用下面列出的步骤创建自定义 View :
- 首先为自定义 View 创建子类。
- 单击将 xib 文件设置
File's Owner
到此类。 - 将 View 拖到类中并将其设置为
contentView
,同时拖动所有要类的元素。 并在类中添加以下代码:
required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) self.commonInit() } private func commonInit() { NSBundle.mainBundle().loadNibNamed("CutomViewDemo", owner: self, options: nil) guard let content = contentView else { return } content.frame = self.bounds content.autoresizingMask = [.FlexibleHeight, .FlexibleWidth] self.addSubview(content) }
现在您可以使用customView了。您可以查看我的演示:Demo
关于ios - 自定义标注 - ViewDidLoad - Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34561576/