2013-01-16 77 views
1

這可能是一個簡單的問題。我有一個UITableView,每個單元格包含一個UIImageView。我想實現的是在UITableView處於編輯模式時更改圖像隱藏狀態

if(is under the editing mode)//Hide UIImageView 
if(not in the editing mode)//Show UIImageView 

我試圖用標籤來訪問這些UIImageView的,但沒有運氣。我的主要技巧是如何訪問這些圖像。

如何做到這一點?使用標籤?父視圖? 非常感謝:)

回答

0

嘗試其他方法後,我使用viewWithTag方法,它正在工作:)基本上,我從100開始標記,因爲我知道在我的情況下一頁中不超過20個視圖。

在我的cellForRowAtIndexPath功能

UIImageView *checkMark = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"checkMark.png"]]; 
checkMark.frame = CGRectMake(xx, xx, xx, xx); 
checkMark.hidden = YES; 
checkMark.tag = indexPath.row + 100; 

,然後我可以使用

for (int i = 100; i < [self.vehiclesArray count] + 100; i++) { 
    ((UIImageView *)[self.view viewWithTag:i]).hidden = NO; 
} 
0

您可以子類的UITableView和覆蓋的方法

- (void)setEditing:(BOOL)editing animated:(BOOL)animated 

,那麼你可以把你的if else塊中。

PS:不要忘記調用父類的方法

您可以隱藏並通過設置圖像view.eg.的隱藏屬性顯示圖片

imageView.hidden = YES; 

您可以在頭文件中定義圖像,然後可以在班級的每種方法中訪問它們。

+0

我知道如何打開編輯模式訪問所有我的圖片,問題是如何顯示和隱藏UIImagesView。 – brianLikeApple

+0

我更新了我的答案 – Mert

+0

是的,但是如何訪問這些圖像?我在導航欄中有一個編輯按鈕。當我點擊那個按鈕時,我想要訪問所有圖像並設置隱藏YES。 – brianLikeApple

0

如果您正在編輯的情況下,您可以在cellForRowAtIndexPath中隱藏圖像視圖。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
... 

    if (self.editing) 
     imageView.hidden = YES; 

... 
} 

然後重新加載表視圖時,編輯設置:

-(void)setEditing:(BOOL)editing animated:(BOOL)animated 
{ 
    [super setEditing:editing animated:animated]; 

    [self.tableView reloadData]; 
} 

如果我理解你的問題正確的話,你要訪問所有的tableView細胞和隱藏ImageView的。但這是不可能的,因爲你的單元格(如果實現正確的話)被重用,所以單元格的數量可能會少於tableview中的行數。

這就是爲什麼您需要設置關於cellForRowAtIndexPath中單元格外觀的所有內容。

+0

我有很多imageViews,不只有一個。我想讓它變成動態的(數字取決於數據庫,數據庫一直在變化),所以無法修復圖像的數量。我們怎麼做到這一點? – brianLikeApple

+0

@brianLikeApple你可以顯示你的'cellForRowAtIndexPath'嗎? – Hjalmar

+0

我現在成功了。我使用viewWithTag來訪問這些圖像。我從100開始設置,因爲我知道我的頁面中沒有超過100個標籤。然後你可以訪問每個圖像:) – brianLikeApple

相關問題