2015-05-04 3 views
0

Im работает над сеткой 2x2, каждый из которых имеет UIView и дочернюю метку с текстом и цветом фона.Хранение UIView с детьми

Я генерировать UIView с для цикла, как это:

// Generatin answer cube buttons 
     for var i = 0; i < cubeCount; i++ 
     { 
      // two answers case 
      if(cubeCount < 3) 
      { 
       var btn = button(xpos, y: ypos, width: screenWidth, height: (screenHeight * 2)); 
       var lbl = labelis("\(i)", btn: btn) 
       btn.addSubview(lbl) 

       xpos = xpos + (screenWidth + 10); 
       self.view.addSubview(btn); 
      } 
      // 3+ answers case 
      else 
      { 
       var btn = button(xpos, y: ypos, width: screenWidth, height: screenHeight); 
       var lbl = labelis("\(i)", btn: btn) 
       btn.addSubview(lbl) 

       xpos = xpos + (screenWidth + 10) 
       self.view.addSubview(btn) 

       // change row in case of more than 2 answers 
       if(i == 1) 
       { 
        xpos = 20 
        ypos = ypos + (screenHeight + 10) 
       } 
      } 

У меня также есть функция tapGesture давая мне знать, когда я нажимаю на одном из ответов куба.

Моя проблема заключается в том, что при нажатии на один из кубов я хотел бы получить доступ ко всем кубам и изменить цвет фона их ярлыков.

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

Я, хотя, может быть, кто-то может вести меня через способ справиться с этим. спасибо.

ответ

0

Таким образом, я нашел решение моей проблемы, поэтому я ответил на мой собственный вопрос для людей, которые могли бы смотреть на это в будущем:

Я создал массив:

var answerData:[UIView] = []; 

и добавил свой UIView по пути для тех, кто я хотел держать хранить

var uiviewvariable = UIView()  
answerData.append(uiviewVariable) 

тогда на моей функции tapGesture, когда пользователь нажмите на одну из точки зрения, я могу вызвать для массива и использовать действие на UIViews

// Accessing stored UIView 
     for(var i = 0; i < answerData.count; i++){ 

      // Accessing subviews 
      for subview in answerData[i].subviews as [UIView] 
      { 
       if subview.tag == 0 
       { 
        if let label = subview as? UILabel { 
         // do something with label inside the views 
        } 
       }     
      } 
     } 

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

0

В храповой обработчике кнопки кубы попробовать следующий код:

for subview in view.subviews as [UIView] { 
    if let cubeButton = subview as? button { 
     //Do something with this cubeButton here. 
    } 
} 
+0

Да, но это только для нажатой кнопки? Я смотрю, как действовать на все созданные uiviews. – SKYnine

+0

Это будет итерация по всем подземелям self.view, и если найденная кнопка типа будет вводить условие if. – Abdullah

+0

он вызывает ошибку: reauire «in» sorry Im совершенно новый для быстрого ... невозможно создать UIView, добавить компоненты, сохранить его в массиве и затем использовать данные внутри этого массива? Это то, что я добавляю в виду. Сканирование для всех компонентов кажется немного интенсивным нет? – SKYnine

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