簡體   English   中英

一鍵單擊,多個操作TableView的自定義單元格

[英]One click, multiple actions Custom Cell of TableView

我所做的

我創建了一個自定義單元,其中帶有一個帶有特定圖像的按鈕。 現在,根據某些條件,我將圖像設置為image1.jpgimage2.jpg

我該怎么做

通過創建一個協議創建自定義單元,在該協議中,我單擊該按鈕動作,在主界面中注意到,該按鈕已按下,並且將參數作為參數傳遞給實例。

問題

現在的問題是,當我單擊特定單元格中的該按鈕時,我更改了cell.button的圖像, cell.button ,當我向下滾動時, 我看到還有其他單元格也更改了其圖像

知道為什么會這樣嗎?

由於UITableView對單元的重用,當單元移出屏幕時,它將移到隊列中,然后在有新單元要加載時重用。

如果要保持每個單元格的屬性唯一,則每次都必須重新構造其值。 為此,您可以保留某種存儲每個單元格狀態/條件的數據數組。 數組將由tableView的indexPath排序,然后您可以根據indexPath從數組中獲取狀態並將單元格更新為正確的圖像。

發生的情況是,當您更改單元格的圖像並隨后向下或向上滾動時,您的單元格將被重用於顯示其他信息。
若要解決您應該檢查UITableView數據源的問題,請查看是否在這種方法中重復使用了單元格:

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


我建議先配置單元格,然后再使用前面的方法返回它,然后為該按鈕分配適當的圖像。
為此,您需要某種機制來記住每個單元的狀態。

有關單元重用和單元的一般信息,您可以轉到Apple文檔UITableViewCell

如上面的答案中所述,您可以管理數組中按鈕的選擇狀態和未選擇狀態,甚至可以在用於顯示數據的數組中添加一個鍵。

在表的didselect事件上,您可以像這樣更改所選字段的鍵

 NSMutableDictionary *newDict = [[NSMutableDictionary alloc] init];
            NSDictionary *oldDict = self.dict_trans_Details ;
            [newDict addEntriesFromDictionary:oldDict];
            [newDict setObject:status forKey:@"transactionstatusid"];
            [table_transdetails_array replaceObjectAtIndex:self.indexValue withObject:newDict];

謝謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM