Могу ли я выполнить addSubview несколько раз без removeFromSuperview?

#iphone

#iPhone

Вопрос:

Должен ли я выполнять removeFromSuperview для каждого addSubview? Например, viewWillAppear вызывается всякий раз, когда появляется pushed view . Если есть addSubview, он вызывается несколько раз.

 - (void)viewWillAppear:(BOOL)animated {   
    [self.view addSubview:myView];
}
  

Комментарии:

1. Да, вы должны удалить представление в методе viewDidDisappear или viewDidUnload, в противном случае, как будто вы добавляете много слоев на слой, не очень хорошая идея.

Ответ №1:

Есть ли какая-либо причина, по которой вы не поместили бы этот код в viewDidLoad вместо этого? Но если вы хотите сохранить его в viewDidAppear, все в порядке. Если вы добавляете вложенный просмотр в супервизию, это уже вложенный просмотр, ничего не происходит. Фактически, если вы добавите вложенный просмотр в любое представление, он удалит его из предыдущего супервизора.

Комментарии:

1. Я не могу поместить его в viewDidLoad, потому что MyView является глобальной переменной. Когда всплывает pushed view, он удаляется. Я должен добавить его снова. Что вы имеете в виду, «он удалит его из предыдущего superview.» ? Вы имеете в виду, что система удаляет MyView из SuperView перед добавлением MyView? Итак, мне не нужно удалять себя.

2. ДА. это не позволит мне добавить комментарий, который просто говорит «да», так что да

Ответ №2:

Я не считаю, что это необходимо, нет — цитировать документы,

Представления могут иметь только один супервизор. Если view уже имеет superview и этот view не является получателем, этот метод удаляет предыдущий superview, прежде чем сделать приемник его новым superview.

В нашем приложении довольно много просмотров, которые по разным причинам мы потенциально можем назначить одному и тому же супервизору несколько раз, и пока это не вызвало никаких проблем.