iOS SDK Проверьте, существует ли представление уже - PullRequest
1 голос
/ 27 января 2011

У меня есть UIWebView, который рисуется программно и распределяется и отображается через несколько подпредставлений (веб-представление добавляется в суперпредставление).

Это все работает, однако у меня есть одна маленькая проблема:

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

Первоначально я думал просто реализовать веб-представление в классе superview, однако это не сработало.

Как мне проверить веб-просмотр, чтобы увидеть, есть ли более одного из них?

Ответы [ 3 ]

11 голосов
/ 27 января 2011

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

Вы также можете сканировать иерархию представления и искать экземпляры UIWebView.

for (UIView *subView in [myView subviews]) {
    if ([subView isKindOfClass:[UIWebView class]]) {
        [subView removeFromSuperview];
    }
}
0 голосов
/ 09 февраля 2015

Используйте метод UIView's isDescendantOfView, чтобы узнать, присутствует ли какой-либо субвид в настоящее время в parentView.

if([addedSubView isDescendantOfView:parentView]) 
{   
   //addedSubView is subview of parentView
   //Take necessary action.
}
else
{
    //addedSubView is not subview of parentView
    //Take necessary action.
}
0 голосов
/ 27 января 2011

ммм, нет, подожди, не очень понятно, что ты имеешь в виду ...

Ты говоришь: "... их больше, чем один" и "... выделяется и отображаетсячерез несколько подпредставлений "

Вы, вероятно, имеете в виду, что у вас есть 2 экземпляра" одного и того же "класса UIWebView, но тогда вы не должны рассматривать их как" один и тот же объект ", который живет в 2 разных суперпредставлениях ... ониразные объекты, у каждого свои свойства ...

Или я не так понял?

Итак, если вы имели в виду, как я сказал, и вы просто хотите управлять из subView (мм ...или мы должны сказать из его UIViewController), если есть другие представления, которые используют UIWebView.Я бы, вероятно, использовал один «родительский» UIViewController, чтобы загрузить мои subViews (в конце концов, они также могли иметь свой собственный UIViewController, затем каждый раз, когда я выделяю и добавляю Subsview UIWebView в моем subView, я просто добавляю к нему тег:

myWebView.tag = 11;

это может измениться, если это необходимо для следующего ... цель состоит в том, чтобы иметь возможность контролировать, если в моем UIView выделено некоторое UIWebView, теперь мы можем сделать это с помощьюмой основной родительский UIViewController:

for (UIView *view_level_1 in [self.view subviews]) {

    for (UIView *view_level_2 in [view_level_1 subviews]) {

        if (view_level_1 >= 10) {

            // do something: dismiss this UIWebView too...

        }
    }
}

он просто управляет во всех подпредставлениях представления моего mainViewControl, если подпредставление «помечено» ранее (тег является своего рода «name / id»)

Я не уверен, что структура вашего subView могла бы быть такой, это было не так ясно в вашем вопросе, но вы можете изменить код, приняв его ...

luca

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...