2014-05-03 140 views
0

我創建具有定製單元, 每個小區包含一個圖像和一個按鈕(除其他文本)的自定義表視圖如何更改表格單元格中的UIImageView圖像,單擊單元格上的按鈕?

我希望能夠以改變的UIImageView圖像按鈕被點擊時, 我能夠獲得點擊事件。然而,我在改變圖像方面遇到了困難。

我試圖讓整個小區,以改變使用的圖像:

UIButton *senderButton = (UIButton *)sender; 
    NSIndexPath *path = [NSIndexPath indexPathForRow:1 inSection:senderButton.tag]; 


    LocationCardCell* cell = (LocationCardCell *) senderButton.superview.superview.superview; 

    if ([cell.class isSubclassOfClass:[LocationCardCell class]]) { 
     NSLog(@"cell is RIGHT CLASS!!!"); 
    }else{ 
     NSLog(@"cell is not THE RIGHT CLASS!!!"); 
    } 

    UIView *cellContentView = (UIView *)senderButton.superview; 
    LocationCardCell *cell1 = (LocationCardCell *)cellContentView.superview; 
    if ([cell1.class isSubclassOfClass:[LocationCardCell class]]) { 
     NSLog(@"cell1 is RIGHT CLASS!!!"); 
    }else{ 
     NSLog(@"cell1 is not THE RIGHT CLASS!!!"); 
       } 

有人可以請讓我知道如何去獲得從按鈕單擊單元格?

回答

2

該方法是在你的軍火庫......

- (NSIndexPath *)indexPathWithSubview:(UIView *)subview { 

    while (![subview isKindOfClass:[UITableViewCell self]] && subview) { 
     subview = subview.superview; 
    } 
    return [self.tableView indexPathForCell:(UITableViewCell *)subview]; 
} 

然後,

- (IBAction)pressed:(id)sender { 

    NSIndexPath *path = [self indexPathWithSubview:(UIButton *)sender]; 
    LocationCardCell* cell = (LocationCardCell *)[self.tableView cellForRowAtIndexPath:path]; 

    // carry on happily 

但不是太愉快。你的問題沒有說明你打算如何處理這個細胞。修改tableview單元格的正確方法是修改模型,重新加載單元格,然後在數據源(tableView:cellForRowAtIndexPath :)中考慮該更改。

更傳統的模式是使用我們剛剛發現的indexPath來解引用模型,修改模型,然後重新加載。

+0

正確,如果你不更新你的對象模型,而滾動你的對象返回到以前的狀態。在你的情況下UIImageView。因爲表格視圖不會立即加載所有內容。而滾動它一次又一次地從你的對象模型中讀取。 – mohacs

+0

優秀,這個工程。非常感謝你 –

相關問題