2012-02-10 56 views
0

當以下事件執行時,我初始化並調用UIImageView。 稍後我將刪除此視圖。我的代碼如下;如何刪除我添加的UIView

self.myView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 320, 460)]; 
[myView setBackgroundColor:[UIColor whiteColor]]; 
self.myView.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"someImage.png"]]; 

[self.tableView addSubview:self.myView]; 

在稍後的例子中,我將刪除圖,我的用於去除代碼如下;

[self.tableView bringSubviewToFront:self.myView]; 
[self.myView setHidden:YES]; 
[self.myView removeFromSuperview]; 

我有問題是,我加入的tableview視圖,是沒有得到去除。我需要知道爲什麼會發生這種情況,並且需要一個解決它的程序化解決方案。

注意:我調試過了,代碼的刪除部分被執行,但沒有任何東西被刪除。幫助

+0

如果你沒有設置hidden = YES,你還有問題嗎? – bryanmac 2012-02-10 01:33:05

+0

是的,我做了,沒有什麼變化 – sharon 2012-02-10 01:37:04

+0

你是否已經將超過一個UIView實例添加到表中?刪除後,打印出表格視圖的子視圖,以查看剩下的子視圖。 – colbadhombre 2012-02-10 01:43:50

回答

0

你應該嘗試只[self.myView removeFromSuperview];

+0

爲什麼?那會和她有什麼不同? – colbadhombre 2012-02-10 02:27:44

0

一個共同的問題,可能會導致這樣的行爲是從後臺線程修改UIKit的對象(如UIView S)。 UIKit通常不是線程安全的,並且從後臺線程調用通常不會長時間更改應用程序的可見狀態。

什麼是執行你的第二塊代碼的方法,它是如何被調用的?

FWIW,bringSubviewToFront:setHidden:應該是不必要的; removeFromSuperview應該是刪除您的視圖所需的全部內容。

0

想知道是否有像導航控制器一樣在你的tableview之上有另一個控制器。 removeFromSuperview實際上是否會引用它給出不想要的結果?