2016-02-20 4 views
0

У меня есть 3 UiLabels на экране. У меня есть массив с цветами, например. красный, зеленый, синий. Я хочу установить фон каждого UiLabel на цвет в массиве, а затем удалить цвет из массива, чтобы 2 UiLabels не имели одинаковый цвет.Выберите цвет рамки UIlabel из массива, а затем удалите его из массива. (быстро)

Я пытался сделать что-то вроде этого. он выбирает случайную строку в массиве, но тогда я не могу присвоить ее uilabel, потому что это не тип UIColor.

override func viewDidLoad() { 
    super.viewDidLoad() 


    let Colorarray = ["UIColor.redColor()", "UIColor.greenColor()", "UIColor.blueColor()"] 


    let randomIndex = Int(arc4random_uniform(UInt32(Colorarray.count))) 


    print(randomIndex) 
    self.left.text = (Colorarray[randomIndex]) 


    self.left.backgroundColor = (Colorarray[randomIndex]) 
    self.middle.backgroundColor = (Colorarray[randomIndex]) 
    self.right.backgroundColor = (Colorarray[randomIndex]) 



} 

это был второй код я попытался

вар colorArray = [(UIColor.redColor(), "Красный"), (UIColor.greenColor(), "зеленый"), (UIColor.blueColor(), «Blue»)]

//random color 
let randomIndex = Int(arc4random_uniform(UInt32(colorArray.count))) 

//accessing color 
var (color, name) = colorArray[randomIndex] 
self.left.text = name 
self.left.backgroundColor = color 
let leftColorRemoval = (colorArray.removeAtIndex(randomIndex)) 
print(leftColorRemoval) 

var (mcolor, mname) = colorArray[randomIndex] 
self.middle.text = mname 
self.middle.backgroundColor = mcolor 
let middleColorRemoval = (colorArray.removeAtIndex(randomIndex)) 
print(middleColorRemoval) 

var (rcolor, rname) = colorArray[randomIndex] 
self.right.text = rname 
self.right.backgroundColor = rcolor 
let rightColorRemoval = (colorArray.removeAtIndex(randomIndex)) 
print(rightColorRemoval) 

ответ

1

Вы можете хранить массив кортежей, которые включают в себя как собственно UIColor и строковое значение. Это делает его таким образом Вы можете обеспечить любое строковое значение, вы хотите:

let colorArray = [(UIColor.redColor(), "Red"), (UIColor.greenColor(), "Green"), (UIColor.blueColor(), "Blue")] 

Затем, чтобы получить доступ к случайному цвету:

let (color, name) = colorArray[randomIndex] 

self.left.text = name 

self.left.backgroundColor = color 
... 

Мне кажется, что ваш код не удаляет случайные цветов. Вот как вы на самом деле это сделали (один из многих способов):

+0

Спасибо за ответ, используя кортежи, кажется, хорошо работает в пожертвовании цветов. играл с кодом, чтобы попытаться сделать удаление ранее пожертвованного цвета, чтобы не было цвета, происходящего дважды на экране, я придумал это, но по какой-то причине возникают прерывистые ошибки кода. он будет работать только 1 в 4 раза. –

+0

см. Ниже, я не мог добавить его в комментарии haha ​​ –

+0

@PeterGaffney 1. Удалите этот код ответа и добавьте его в свой вопрос в качестве редактирования, чтобы он не был помечен. 2. Причина случайности, которая не работает, заключается в том, что она не получает новый индекс каждый раз. Смотрите, как мой код вызывает 'random()' каждый раз? – tktsubota

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