2016-05-30 2 views
0

Я пытаюсь создать простой AI для игры с tic tac toe, который уже позволяет двум игрокам выбирать из девяти невидимых кнопок. Использование sender.tag Я могу установить фон каждой кнопки для отображения «X» или «O.».Как манипулировать UIButtons с помощью тега

Теперь я хочу создать ИИ, но я не знаю, как установить каждый фон кнопки на основе выбора ИИ. Я попытался сделать это через параметр тега, но он не работает, потому что нет отправителя.

Каков наилучший способ управления фоном (или любым параметром UIButton без имени)?

Спасибо, Matt

ответ

0

Определение элементов пользовательского интерфейса их теги не лучшая практика. Если вы создаете свой пользовательский интерфейс с помощью Interface Builder, вы можете назначить эти UIButtons массиву выходов UIButton, который затем позволит вам получить доступ к нужному объекту, с которым нужно манипулировать.

1) Объявить массив точек:

@IBOutlet var buttons: [UIButton]! 

2) Connect в Interface Builder все UIButtons к розетке кнопок в определенном порядке

3) Используйте расширение для UIButton, чтобы изменить его цвет:

extension UIButton { 
    private func imageWithColor(color: UIColor) -> UIImage { 
     let rect = CGRectMake(0.0, 0.0, 1.0, 1.0) 
     UIGraphicsBeginImageContext(rect.size) 
     let context = UIGraphicsGetCurrentContext() 

     CGContextSetFillColorWithColor(context, color.CGColor) 
     CGContextFillRect(context, rect) 

     let image = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     return image 
    } 

    func setBackgroundColor(color: UIColor, forUIControlState state: UIControlState) { 
     self.setBackgroundImage(imageWithColor(color), forState: state) 
    } 
} 

4) Затем обратитесь к выбранному UIButton из массива на выходе, когда МА вычисляет ход:

buttons[int_of_AI_selected_button].setBackgroundColor(thecolor, forthecontrolstate)