2015-10-26 2 views
0

На viewcontroller у меня есть 101 кнопка. Если нажата одна из первых 100 кнопок, я хочу изменить изображение кнопки 101 (у меня есть 100 изображений в этом проекте: image1, image2, image3 и т. Д.)Как изменить изображение одной кнопки, нажав другие кнопки?

Итак, я сделал это, указав каждую кнопку тег от 0-100, а затем сделать переключатель заявление на основе sender.tag

@IBOutlet weak var button101 : UIButton! 

var i = 1 

    // I hooked up all the other 100 buttons to a single IBAction 
    @IBAction func buttonTapped(sender: UIButton) { 

switch sender.tag { 

case 0: i = 1 

    let image = UIImage (named: "image\(i)") 
    button101.setImage(image, forState:.Normal) 

case 1: i = 2 

    let image = UIImage (named: "image\(i)") 
    button101.setImage(image, forState:.Normal) 

case 2: i = 3 

let image = UIImage (named: "image\(i)") 
    button101.setImage(image, forState:.Normal) 

case ..: // etc. until case 99 (because button 100 has tag 99) 

default: break 

Это супер некрасиво код работает: Он изменяет изображение кнопки № 101 в указанное изображение (я). Но я хочу более элегантное и лучшее решение.

У меня 2 вопроса:

  1. Как Инициализируем 'образ' постоянной/переменной в лучшую сторону (за пределами IBAction)?
  2. Какой тип (цикл) используется вместо этого большого оператора switch? Итак: я хочу определить, какая кнопка нажата, а затем обновить значение var i, прокрутить изображения и найти и обновить изображение кнопки101 с изображением (i).

Надеюсь, мои вопросы ясны. Пожалуйста, дайте мне знать, если это не так. Помощь очень ценится!

ответ

1

Коммутатор заявление действует так же, как:

if sender.tag < 100 { 
    let image = UIImage (named: "image\(sender.tag + 1)") 
    button101.setImage(image, forState:.Normal) 
} 

Вы можете поместить ваш UIImage в верхней части ViewController с var UIImage: UIImage!, если вы хотите, но я не вижу никаких причин, чтобы сделать это.

+0

Это действительно решение для меня, спасибо! Я знал, что это может быть простой код. Я был рядом, но не мог понять. И да, таким образом, нет необходимости инициализировать переменную изображения в верхней части моего диспетчера представлений. – codeDude

Смежные вопросы