0

我正在尝试以编程方式设置按钮图像,除了我之外,似乎没有人对此有任何问题。

我的代码:

func moreOptionsKeyMap(){
    for x in self.mainView.subviews as [UIButton]
    {
        let image = UIImage(named: "\(numberImages[0])") as UIImage
        if x.tag == 0 {
            x.setImage(UIImage (named: image), forState: .Normal)
        }

    }
}

我尝试直接插入图像的名称(这是抛出错误的行)

x.setImage(UIImage (named: "1Key.png"), forState: .Normal)

但我不断收到同样的错误。

我在 Stackoverflow 上找到了一个答案,该答案说解决方案是:

let image = UIImage(named: "name") as UIImage
let button   = UIButton.buttonWithType(UIButtonType.System) as UIButton
button.setImage(image, forState: .Normal)

每个人都说效果很好,所以我无法想象我的问题是什么。

我正在制作键盘,所以我在 Interface Builder 中设置了按钮,然后在我的 viewDidLoad 中设置了按钮

for v in self.mainView.subviews as [UIButton]
    {
        v.addTarget(self, action: "buttonPressed:", forControlEvents: UIControlEvents.TouchUpInside)
    }

然后在 buttonPressed 方法中,我有一个调用 moreOptionsKeyMap() 的开关

4

1 回答 1

4

乍一看,我会在这里说:

x.setImage(UIImage (named: image), forState: .Normal)

您正在传递image,这是 a UIImage,而需要一个字符串。

我认为你必须改变这条线:

let image = UIImage(named: "\(numberImages[0])") as UIImage

进入:

let image = "\(numberImages[0])"

所以这就是你的方法应该是这样的:

func moreOptionsKeyMap() {
    for x in self.mainView.subviews as [UIButton]
    {
        let image = "\(numberImages[0])"
        if x.tag == 0 {
            x.setImage(UIImage (named: image), forState: .Normal)
        }
    }
}
于 2014-10-02T19:58:06.447 回答