вызовет removeFromSuperview дважды, чтобы вызвать сбой или побочный эффект - PullRequest
3 голосов
/ 28 ноября 2011

У меня есть элемент UIView, который я добавляю в контроллер основного вида.

Из-за структуры моего кода, так получается, что removeFromSuperview вызывается дважды в разных местах моего кода.

[myview removeFromSuperview];

Таков мой код, поэтому я хочу знать, вызывает ли вызов 'removeFromSuperview' какие-либо проблемы.

Или как проверить, находится ли представление в суперпредставлении и толькоудалите его.

например

if (myview in superview)
    [myview removeFromSuperview];
else
    do nothing

Ответы [ 2 ]

8 голосов
/ 28 ноября 2011

Документы для removeFromSuperview говорят следующее:

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

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

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

if( theView.superview != nil )
{
  // theView is a subview for some view
}
0 голосов
/ 28 ноября 2011

Попробуйте это:

if (myView.view.superview != nil) {
    [myView removeFromSuperview];
}
else {
    //do something
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...