2012-05-30 45 views
0

嗨在我的應用程序Intially我從應用程序委託加載視圖。接下來,當一些按鈕點擊這個根視圖時,我添加了這個代碼。從Superview刪除表子視圖

-(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是另一個視圖控制器,隱藏視圖只是根視圖控制器中的一個視圖。現在完全爲Root視圖控制器添加了兩個視圖。現在我的問題是我想從根視圖中刪除兩個添加的子視圖時,我單擊表格單元格。這個怎麼做?而且當我添加這個子視圖到根視圖滾動也不可能到表視圖和說錯誤的訪問錯誤如何解決這個問題?或者任何其他方式來做到這一點。

+0

很難說沒有在發生這種情況時看到代碼而導致錯誤的訪問錯誤。但是你說View1是一個視圖控制器。我的猜測是,你在'viewDidLoad'中設置了一些初始化,並期望它運行。但它不會。您只是初始化類並獲取屬性的句柄(視圖)。 –

回答

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]; 
0

如果View1裏面hideView,所以你可以撥打[hideView removeFromSuperView];刪除兩者,或者只使用@Nekto解決方案來識別要刪除的視圖。
對於滾動問題,如果您在UITableView之上添加視圖,您將失去表格的滾動,這很正常,您可以查看UIView的hitTest方法。