ios – 如何在Swift / Xcode中为按钮设置图像

尝试以编程方式设置按钮的图像时,我收到“nil”错误.我究竟做错了什么?这些都不是可选项.
@IBOutlet weak var scrollView: UIScrollView!

var imageButton: UIButton!
var index: Int = 0

var images: [UIImage] = [UIImage(named: "image1.png")!,UIImage(named: "image2.png")!,UIImage(named: "image3.png")!,UIImage(named: "image4.png")!,UIImage(named: "image5.png")!,UIImage(named: "image6.png")!,UIImage(named: "image7.png")!,UIImage(named: "image8.png")!,UIImage(named: "image9.png")!,UIImage(named: "image10.png")!,UIImage(named: "image11.png")!,UIImage(named: "image12.png")!,UIImage(named: "image13.png")!,UIImage(named: "image14.png")!,UIImage(named: "image15.png")!,UIImage(named: "image16.png")!,UIImage(named: "image17.png")!,UIImage(named: "image18.png")!,UIImage(named: "image19.png")!,UIImage(named: "image20.png")!,UIImage(named: "image21.png")!,UIImage(named: "image22.png")!,UIImage(named: "image23.png")!,UIImage(named: "image24.png")!,UIImage(named: "image25.png")!,UIImage(named: "image26.png")!,UIImage(named: "image27.png")!,UIImage(named: "image28.png")!,UIImage(named: "image29.png")!,UIImage(named: "image30.png")!]


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view,typically from a nib.

    let screenSize: CGRect = UIScreen.mainScreen().bounds
    let screenWidth = screenSize.width
    //let screenHeight = screenSize.height

    let numWidth: CGFloat = 3
    let numHeight: CGFloat = 10
    self.scrollView.frame.size.width = screenWidth
    let width: CGFloat = (self.scrollView.frame.size.width - (numWidth + 1))/3

    for var i:CGFloat = 0; i < 3; ++i{
        for var j:CGFloat = 0; j < 10; ++j {

            let image: UIImage = images[index] as UIImage!


            imageButton.setimage(image,forState:UIControlState.normal)
            imageButton.frame = CGRectMake(width*i,width*j,width,width)
            self.scrollView.addSubview(imageButton)

            index++
        }
    }
    scrollView.contentSize.height = (width)*numHeight

解决方法

我想你是再次从Image创建Image.

就这样吧

imageButton.setimage(images[index],forState:UIControlState.normal)

希望它会奏效.

或者你可以这样做:

var images = [String]?

在viewDidLoad中

images = ["image1.png","image2.png"]
let img : UIImage = UIImage(named: images[index])!
imageButton = UIButton.buttonWithType(UIButtonType.System) as UIButton
button.frame = CGRectMake(100,100,100)//Set your own frame
imageButton.setimage(img,forState:UIControlState.normal)

并检查它必须在您的项目中可用的图像

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...