0

こんにちは私のアプリでは、最初にアプリデリゲートからビューをロードしました。次に、このルート ビューのボタンをクリックすると、このコードが追加されます。

-(IBAction)method
{
   View1 *v1=[[View1 alloc] init];
   CGRect frame = CGRectMake(0.0f, 100.0f, 320.0f, 250.0f);
   v1.view.frame=frame;

   hideView = [[UIView alloc] initWithFrame: CGRectMake(0,0,320,480)];
   hideView.backgroundColor = [UIColor blackColor];
   hideView.alpha =0.8;
   [hideView addSubview:v1.view];
   [self.view addSubview:hideView];
}

上記のコードでは、View1 は別のビュー コントローラーであり、非表示ビューはルート ビュー コントローラーの単なるビューです。これで完全にルート ビュー コントローラー用に 2 つのビューが追加されました。今私の質問は、テーブル セルをクリックしたときに、追加された 2 つのサブビューをルート ビューから削除したいということです。これを行う方法?また、このサブビューをルートビューに追加すると、テーブルビューにもスクロールできず、これを解決する方法が悪いアクセスエラーと言いましたか? またはこれを行う他の方法。

4

2 に答える 2

1

tag任意のビュー (サブビュー) に一意に設定して、後でそれらへの参照を簡単に取得できます。

あなたの場合、たとえば、次の行を追加できます。

 v1.tag = 10112;
 hideView = 10113;

そして、後で入力できるそのビューへの参照を取得します。

//view - is a root view of that subviews
View1 *v1 = [view viewWithTag:10112];
UIView *hideView = [view viewWithTag:10113];

// and now you are able to remove them:
[v1 removeFromSuperview];
[hideView removeFromSuperview];
于 2012-05-30T09:18:07.700 に答える
0

View1が 内にある場合はhideView、呼び出し[hideView removeFromSuperView];て両方を削除するか、@Nekto ソリューションを使用して削除するビューを認識するだけです。
スクロールの問題については、テーブルのスクロールが失われる上にビューを追加すると、UIView のhitTestUITableViewメソッドを見ることができます。

于 2012-05-30T09:27:32.467 に答える