UIButton或方法UIButton的数组(命名为:" \(string)")

时间:2015-03-10 03:22:06

标签: ios swift

是否可以制作UIButton s?

的数组
let buttonArray: [UIButton] = [UIButton(Button1)!, UIButton(Button2)!, UIButton(Button3)!]

稍后提及

buttonArray[0].setImage(UIImage, forState: UIControlState.Normal)

或以某种方式设置

var button = UIButton.whoseName = "Specific String"
button.setImage(UIImage, forState: UIControlState.Normal)

VC1:

import UIKit

class VC1: UIViewController {
    @IBOutlet weak var Card1: UIButton!
    @IBOutlet weak var Card2: UIButton!
    @IBOutlet weak var Card3: UIButton!
    let Cards: [UIImage] = [UIImage(named: "Default")!, UIImage(named: "2s")!,UIImage(named: "2h")!,UIImage(named: "2c")!,UIImage(named: "2d")!,]
    // var CardCaller: Array<UIButton> = [Card1, Card2, Card3]
    let CardCallers: [UIButton] = [Card1, Card2, Card3]  //ERROR: 'VC1.Type' does not have a member named 'Card1'
    var caller = ""
    var Index2 = Int()

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

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        let KVC = segue.destinationViewController as VC2
        KVC.source = segue.identifier!


    }
    @IBAction func unwind(unwindSegue: UIStoryboardSegue){
        //Card1.setImage(Cards[Index2], forState: UIControlState.Normal)
        //let button = UIButton(named: "Card1")!
        if caller == "Card1" {Card1.setImage(Cards[Index2], forState: UIControlState.Normal)} else if caller == "Card2" {Card2.setImage(Cards[Index2], forState: UIControlState.Normal)} else if caller == "Card3" {Card3.setImage(Cards[Index2], forState: UIControlState.Normal)}
    }

    @IBAction func text(sender: AnyObject) {
        println(caller)
        println(Index2)
    }

}

IBOutlets正确连接到Storyboard按钮;我通过控制/拖动来创建它们到视图控制器。

2 个答案:

答案 0 :(得分:0)

你可以。

两种方法:

var buttonsArray: Array<UIButton> = [button1, button2]

或者

@IBOutlet var buttonsArray: Array<UIButton> = []

对于后者,它可以从故事板填充为IBOutletCollection

请注意,可以同时将视图分配给IBOutletIBOutletCollection

答案 1 :(得分:0)

这不应该是一个问题,但它可能与您访问按钮时有关。尝试全局创建数组,并在加载后添加按钮:

class VC1: UIViewController {
    @IBOutlet weak var Card1: UIButton!
    @IBOutlet weak var Card2: UIButton!
    @IBOutlet weak var Card3: UIButton!
    var CardCallers: [UIButton] = [UIButton]() // Empty UIButton array

    override func viewDidLoad() {
        self.CardCallers = [self.Card1, self.Card2, self.Card3] // Buttons have now loaded in the view
    }
}