2011-01-26 13 views
1

プログラムで描画され、複数のサブビュー(WebViewがスーパービューに追加されます)によって割り当てられて表示されるUIWebViewがあります。iOS SDKビューが既に存在するか確認してください

このすべての作品は、しかし、私は一つの小さな問題を抱えている:

2つの異なるサブビューは、このWebViewのを表示する場合は、私は2 webviewsを取得し、その1つのビューはWebViewの他の遺跡を閉じるとき。私はこれを望んでいない。

元々私はsuperviewクラスでwebviewを実装すると思っていましたが、動作しませんでした。

それ以上のものがあるかどうかを確認するにはどうすればよいですか?

答えて

11

webviewインスタンスは、ビュー階層に一度しか追加できません。一度に2つのWebビューを画面に表示すると、2つの異なるインスタンスになります。階層に追加したこれらのインスタンスを追跡し、追跡しているすべてのインスタンスをスーパービューから削除します。

ビュー階層をクロールして、UIWebViewのインスタンスを探すこともできます。

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

MHM、いや、それはあなたが意味しているかあまり明確ではありません、待って...

あなたが言う:「「...自身のもっとそして1がある」と...が割り当てられます

「同じ」UIWebViewクラスの2つのインスタンスがある可能性がありますが、それらを2つの異なるスーパービューに存在する「同じオブジェクト」として考えるべきではありません。異なるオブジェクト、誰もが独自のプロパティを持っています...

または私は誤解しましたか?立った?

私が言ったことを意味していて、UIViewを使用する他のビューがある場合は、サブビュー(mhm ...またはそのUIViewControllerから言います)からコントロールしたいだけです。 私はおそらく1つのUIViewController "親"サブビューをロードする(最終的には自分自身のUIViewControllerを持つこともできますし、AllocとaddSubview UIViewをサブビューに追加するだけです)。

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私のmainViewControlのビューのすべてのサブビューで、サブビューが "タグ付けされている"場合(タグは「名前/ ID」の一種です)

サブビューの構造がわからないそのように、それはあなたの質問にはそれほど明確ではありませんでしたが、あなたはそれ...

ルカ

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. 
} 
関連する問題