解析UITableViewCell的reuse問題

2021-06-11 21:33:09 字數 1368 閱讀 9607

我們通過**來探索uitableviewcell重用的實現,下面是一段使用uitableview的**,

- (uitableviewcell *)tableview:(uitableview *)tableview cellforrowatindexpath:(nsindexpath *)indexpath

// configure the cell...

cell.textlabel.text = [nsstring stringwithformat:@"%d",indexpath.row];

return cell;

}

執行結果是這樣

我們在textfield裡輸入label的序號,然而我們上下拖動後,結果是textfield的值並沒有得到儲存,其隨著cell的重用而變化。

我們回到

dequeuereusablecellwithidentifier的定義

- (id)dequeuereusablecellwithidentifier:(nsstring *)identifier;  // used by the delegate to acquire an already allocated cell, in lieu of allocating a new one.
使用委託來獲取乙個已經分配的cell,代替分配新的乙個;在這個例子中,將當前螢幕下建立的cell都先加入到物件池,這是物件池的內cell的個數大致是8,當我們滑動tableview時,將使用

dequeuereusablecellwithidentifier方法返回物件,該方法通過

reuseidentifier(「mycell」)在物件池中,查詢之前已經放入的cell物件。

然後從物件池中,取出之前放入的,然後執行

// configure the cell...

cell.textlabel.text = [nsstring stringwithformat:@"%d",indexpath.row];

所以我們需要為textfield裡的text內容設定model層,然後配置

textfield的內容,像我們對textlabel的設定一樣

還有了不完美的解決方案,既然它重用出問題,就不讓它重用,**如下

nsstring *cellidentifier = [nsstring stringwithformat:@"mycell_%d",indexpath.row];
對於每一行,設定不同的reuseidentifier。

Xib檔案建立UITableViewCell

iphone開發中關於xib檔案建立uitableviewcell是本文要介紹的內容,主要是來學習如何使用xib檔案建立uitableviewcell的幾種方法,來看本文詳細內容。1 cell不做為controller的插口變數 首先建立乙個空的xib檔案,然後拖拽乙個cell放在其上面,記得設定其...

iOS開發教程 UITableViewCell介紹

緊跟著uitableview腳步,一起學習uitableviewcell的有關內容,學習也要趁熱打鐵,不然等到把ios開發方面的東西都學完了,怕大家也忘差不多了,一定要多聽 多想 多問 多練才會把每一節內容都消化掉。更多ios培訓 手遊開發 手機開發 iphone開發等詳細內容盡在藍鷗3!ios培訓...

可任意自定義的UITableViewCell

uitableview的強大更多程度上來自於可以任意自定義uitableviewcell單元格。通常,uitableview中的cell是動態的,在使用過程中,會建立乙個cell池,根據每個cell的高度 即tableview heightforrowatindexpath 返回值 以及螢幕高度計算...