如何在NSView中更新文本?

时间:2015-03-07 16:08:09

标签: cocoa swift nsview

我想更新drawInRect: withAttributes:中通过NSView添加的文字。但是,似乎只能通过更改其属性来更新文本。

class MyView: NSView {
    var str: NSString!

    override func drawRect(dirtyRect: NSRect) {
        super.drawRect(dirtyRect)

        str = "Sample Text"
        str.drawInRect(NSMakeRect(0, 0, 60, 40), withAttributes: nil)
    }
}

上面的代码为视图创建了文本Sample Text,我在故事板上添加了该文本。

但是,当我尝试通过更改其属性或再次调用drawInRect: withAttributes:来更新文本时,文本根本没有更新。这是代码:

@IBAction func callButton(sender: AnyObject) {
        myView.str = "Test"
        myView.str.drawInRect(CGRectMake(0, 0, 60, 40), withAttributes: nil)
} 

为什么文字没有更新?另外,如何更新文本?

1 个答案:

答案 0 :(得分:1)

请勿覆盖str中的drawRect。而是在初始化时为属性设置默认字符串,并在更新setNeedsDisplay属性时使用str将视图标记为脏。