2015-06-27 52 views
0

我創建了一個簡單的UITableViewController。我爲所有單元格添加了一個cell.imageView.image,但是我使用某些單元格的alpha來隱藏圖像。當我向下滾動時,其他單元格開始隱藏圖像。我試圖通過只關注一個單元來解決這個問題,但隨機單元開始隱藏圖像時,同樣的問題仍然存在。任何幫助將不勝感激。UITableViewCell更新多個圖像阿爾法

- (void)viewDidLoad { 
    [super viewDidLoad]; 
} 

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { 
    return 1; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
    return 20; 
} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    static NSString *cellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier forIndexPath:indexPath]; 
    cell.imageView.image = [UIImage imageNamed:@"down-arrow.png"]; 
    cell.textLabel.text = [NSString stringWithFormat:@"%lu", indexPath.row]; 
    if (indexPath.row == 2) { 
     cell.imageView.alpha = 0; 
    }    
    return cell; 
} 
+1

首先,如果您想隱藏某些東西,請使用隱藏的屬性(布爾值)而不是alpha。 – Masterfego

+0

cell.imageView.alpha =!(indexPath.row == 2); – 0yeoj

+0

你使用錯誤的方法Apple iOS提供隱藏和顯示屬性,那麼你爲什麼使用這種類型的設置alpha。作爲@Masterfego –

回答

0

以上回答

if (indexPath.row == 2) { 
    cell.imageView.hidden = YES; 
    cell.textLabel.text = @"#2 is HERE"; 
} else { 
    cell.imageView.hidden = NO; 
    cell.textLabel.text = [NSString stringWithFormat:@"%lu", indexPath.row]; 
} 

使用屬性是正確的。但這是另一個建議。相反設置的alpha你可以改變imageview's隱藏屬性,以及像:

if (indexPath.row == 2) { 
    cell.imageView.hidden = YES; 
} else { 
    cell.imageView.hidden = NO; 
} 

而且,它會更好,如果你將一個自定義單元格。

0

您是否嘗試過的代碼更改爲:

if (indexPath.row == 2) { 
    cell.imageView.alpha = 0; 
} else { 
    cell.imageView.alpha = 1; 
} 

這裏的問題是,這些細胞被重用,如果你在第2行顯示的單元格,則該單元格將移動屏幕外,並在路徑10重新用於一些細胞,該細胞將仍然具有alpha設置爲0。

因此,你必須告訴細胞具有1 除非它是在indexPath 2.

的α

你可能要考慮使用hidden屬性,而不是設置alpha爲1和0

如果你比較屬性的解釋在docs這可能是由於各種原因更正確:

隱藏視圖從其窗口中消失,並且不會接收輸入事件。然而,它仍然在其超級瀏覽的子視圖列表中,並像往常一樣參與自動調整。用子視圖隱藏視圖會隱藏這些子視圖和它們可能擁有的任何視圖後代。這種效果是隱含的,不會改變接收者後代的隱藏狀態。

隱藏窗口當前第一響應者的視圖會導致視圖的下一個有效關鍵視圖成爲新的第一響應者。

此屬性的值僅反映接收者的狀態,並沒有考慮視圖層次結構中接收者祖先的狀態。因此,這個屬性可以是NO,但如果隱藏祖先,接收器仍然可能被隱藏。

該屬性的值在0.0到1.0,其中0.0表示完全透明,1.0表示完全不透明的範圍內的浮點數。該值僅影響當前視圖,不會影響其任何嵌入式子視圖。

+0

這工作完美。我沒有足夠的聲望來投票回答這個問題,但是謝謝你! – baskInEminence

+0

@ program234你可以接受這個用戶的答案。 –

0

試試這個:隱藏(布爾)當你想隱藏什麼

0

這個答案都是正確的..只是爲了簡化..

cell.imageView.alpha = !(indexPath.row == 2); 

or 

cell.imageView.hidden = (indexPath.row == 2); 

:)

0

而不是設置你可以改變的ImageView隱藏屬性的阿爾法以及類似的:

if (indexPath.row == 2) { 
    cell.imageView.hidden = YES; 
} else { 
    cell.imageView.hidden = NO; 
} 

或者你可以用它更好的自定義單元格。