2016-11-30 3 views
0
var replycount = replies.count 
var startingTag = 10 


    for subview in self.personView.subviews { 

    if replycount > 0 { 
     subview.viewWithTag(startingTag)?.backgroundColor = .green 
     replycount = replycount - 1 
     startingTag = startingTag + 1 

} 
    } 
    } 

Я вынимаю номер с сервера (счет ответа) и пытаюсь представить число, раскрашивая некоторые виды на экране. У меня 10 пузырьков в нижней части, и если answercount был 4, начиная слева, я бы хотел, чтобы у 4 пузырей был зеленый цвет фона, а остальное оставалось черным по умолчанию.Looping через subviews swift/ios

То, что я пытаюсь сделать с приведенным выше кодом, - это захватить счетчик ответов, который я делаю успешно, мой первый пузырь начинается с тега 10 и доходит до 19, и если количество ответов больше чем 0, то есть есть ответ, я хочу взять первый тег из 10, сделать его зеленым, а затем перейти к следующему тегу 11, минус от количества ответов и продолжать идти, пока больше не будет ответов .

единственный раз ниже код работает, если я закомментировать

replycount = replycount - 1 

и изменить viewWithTag (startingTag) к viewWithTag (10) и жёстко числа. Если какая-либо из т шланг две вещи не выполняются, цвет представления не изменяется.

Есть ли лучший способ сделать это или любые идеи, почему я столкнулся с этой проблемой?

ответ

1

Пропустить петлю через подзоны и просто сделать self.view.viewWithTag? Хотя я просто предполагаю, что все пузырьки находятся в одном и том же представлении, а не каждый в другом подвид.

Хотя я бы, наверное, написал что-то вроде этого для ясности:

var replycount = replies.count 

for tag in 10 ..< (10 + replycount) { 
    self.view.viewWithTag(tag)?.backgroundColor = .green 
} 
+0

Так гораздо проще. Большое спасибо! – user6820041