我在Swift应用程序中有一个映射引脚标注的自定义类,它连接到一个.xib文件。当用户点击pin并加载视图时,我正试图更改为视图内部的标签文本。这是我所拥有的:
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"
我该如何让它发挥作用?加载此详图索引视图时,如何更改出口的文本?
您可以引用它:CustomView您可以使用以下步骤创建自定义视图:
- 首先为自定义视图创建子类
- 单击以将文件集
File's Owner
xib到此类 - 将视图拖动到类中,并将其设置为
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。你可以查看我的演示:演示