Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 绘制后如何更改NSTextField的值?_Swift_Cocoa_Button_Drawing_Textfield - Fatal编程技术网

Swift 绘制后如何更改NSTextField的值?

Swift 绘制后如何更改NSTextField的值?,swift,cocoa,button,drawing,textfield,Swift,Cocoa,Button,Drawing,Textfield,我有一个文本字段,画在一个按钮里面。设置正在运行。按钮、文本字段和值如下所示: 下面是我如何设置文本字段的代码: class myButton: NSButton { var textfield = NSTextField() override func draw(_ dirtyRect: NSRect) { super.draw(dirtyRect) drawtextfield(text: "hello") } func

我有一个文本字段,画在一个按钮里面。设置正在运行。按钮、文本字段和值如下所示:

下面是我如何设置文本字段的代码:

class myButton: NSButton {

    var textfield = NSTextField()

    override func draw(_ dirtyRect: NSRect) {
        super.draw(dirtyRect)

        drawtextfield(text: "hello")
    }

    func drawtextfield(text: String) {

        let dirtyRect = NSRect()
        textfield.frame = CGRect(x: self.frame.origin.x, y: self.frame.origin.y, width: self.frame.width, height: self.frame.height)
        textfield.stringValue = text
        textfield.draw(dirtyRect)
    }
}
现在如果我打电话:

myButton.init().drawtextfield(text: "hello2")
我收到错误:
CGContextSetCMYKStrokeColor:无效的上下文0x0

怎么可能在应用程序启动时绘制文本字段,当函数
drawtextfield()
第二次被调用时,我会出错?非常感谢您的建议。

当您可以为按钮设置标题时,为什么还要这样做?您肯定有设计问题。@ElTomato,因为我想用颜色填充整个按钮,使灰色边框消失。请参阅我的最后一个更新。谢谢你不要这样做<代码>绘制应该绘制,而不是其他。当您可以为按钮设置标题时,为什么还要这样做?您肯定有设计问题。@ElTomato,因为我想用颜色填充整个按钮,使灰色边框消失。请参阅我的最后一个更新。谢谢你不要这样做<代码>绘制应该绘制,没有其他内容。