2014-09-28 4 views
6

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

class FirstViewController: UIViewController { 

    @IBAction func btnAddTask_Click(sender: UIButton){ 

      var subViews = self.subviews.copy() 

    } 
} 

Я получаю ошибку:

«FirstViewController» не имеет элемента с именем «подвиды»

Как я могу получить подвиды текущего вида?

+1

'я. view.subviews'? –

+0

Я пробовал это и получил эту ошибку: «[AnyObject]» не имеет члена с именем «copy» – user2961953

+0

Массивы всегда копируются в Swift. –

ответ

11

UIViewController не имеет subviews. Он имеет view свойство, которое имеет subviews свойство:

for subview in self.view.subviews { 
    // Manipulate the view 
} 

Но, как правило, это не очень хорошая идея. Вместо этого вы должны поместить ярлыки, которые вы хотите, в IBOutletCollection и перебрать их. В противном случае вы очень привязаны к точному набору subviews (который может измениться).

Чтобы создать IBOutletCollection, выберите все метки, которые вы хотите в IB, и перетащите их в исходный код. Он должен спросить, хотите ли вы создать массив коллекций. (Обратите внимание, что не существует никаких обещаний по порядку этого массива.)

+0

спасибо. Это работает. Я рассмотрю ваше предложение об использовании IBOutletCollection – user2961953

+0

Я динамически создаю метки, поэтому мне нужно выяснить, как добавить метки в коллекцию из исходного кода. Еще раз спасибо – user2961953

+0

Просто поместите их в свойство массива, когда вы их создаете. –

4

Для поиска всех подвидов с вашей точки зрения вы можете использовать этот код:

for subview in self.view.subviews { 
    // Use your subview as you want 
} 

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

myButton.restorationIdentifier = "mySpecialButton"; 

И после того, что вы можете найти свой элемент использовать эту структуру:

for view in view.subviews { 
       if (view.restorationIdentifier == "mySpecialButton") { 
        print("I FIND IT"); 
        view.removeFromSuperview(); 
       } 
      } 

:)

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