2011-01-26 2 views
1

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

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

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

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

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

ответ

11

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

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

for (UIView *subView in [myView subviews]) { 
    if ([subView isKindOfClass:[UIWebView class]]) { 
     [subView removeFromSuperview]; 
    } 
} 
0

MHM, нет, подождите, это не так ясно, что вы значите ...

Вы говорите: «... есть более одного из себя» и»... получает выделено и отображается через несколько подпунктов «

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

Или я не ошибся стоял?

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

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... 

     } 
    } 
} 

it j ust во всех subViews представления моего mainViewControl, если перед ним есть «tagged» (тег - это своего рода «имя/идентификатор»)

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

Luca

0

Используйте 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. 
} 
Смежные вопросы