我有一個UITable,其中包含幾個包含文本字段的自定義單元格。然而,當向上和向下滾動時,這些單元格的順序會混亂。UITableViewCell dequeueReusableCellWithIdentifier不按順序
我搜索,這不適合我因爲我有幾個UITextFields,我需要抓住用戶輸入這些。
UITableViewCell showing indexpath rows out of order
謝謝
我有一個UITable,其中包含幾個包含文本字段的自定義單元格。然而,當向上和向下滾動時,這些單元格的順序會混亂。UITableViewCell dequeueReusableCellWithIdentifier不按順序
我搜索,這不適合我因爲我有幾個UITextFields,我需要抓住用戶輸入這些。
UITableViewCell showing indexpath rows out of order
謝謝
您或者需要爲每個單元使用唯一的標識符,否則完全避免使用出列機制。如果您正在執行後者,請將對每個單元格的引用存儲在相應的實例變量中,否則將它們全部添加到存儲在實例變量中的集合中。
如果你決定走這條路,你可以通過以下兩種方法之一來做到這一點:在界面生成器中創建單元格(這會很方便,因爲它們可能已經嵌套文本字段,很好地定位,等等。)並使用插座連接它們,或以編程方式在viewDidLoad
或init...
方法中創建單元格。
無論哪種情況,您都不再需要致電dequeueReusableCellWithIdentifier:
;相反,您可以返回已經創建的單元格實例。
@Dilshan你可以做類似這樣的東西在你的代碼來實現你想要什麼。
.
.
.
if(cell == nil)
{
// create your cell in this block of quotes in the cellForRowAtIndexPath: method to avoid making of the cells again, so that your textfield value remain as it is.
.
.
.
//place all the code in this block only.
}
[cell autorelease];
return cell;
對不起,我沒有xcode在家裏,所以我不能給你任何特定的代碼。
但我想你明白了。
歡呼聲。
感謝您的回覆。我確實如下。看我的下一篇文章。 – Dilshan 2011-02-26 19:24:00
這是我的代碼。 CustomTextFieldCell是一個帶有UITextField的單元格。和一些信息。但是,當您滾動時,填充的值和這些更改的順序。
static NSString *CellIdentifier = @"CustomTextFieldCell";
CustomTextFieldCell *cell = (CustomTextFieldCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomTextFieldCell" owner:nil options:nil];
for (id currentObject in topLevelObjects) {
if ([currentObject isKindOfClass:[UITableViewCell class]]) {
cell = (CustomTextFieldCell *) currentObject;
break;
}
}
}
您應該觀看WWDC 2010會話128,掌握表格視圖。在Google上搜索它。問題在於表格單元格是可重用的,因爲表格中的每一行在視覺上都是相同的,但內容不同。您需要確保返回的表格單元格包含所請求的索引路徑的正確數據,而不僅僅是任何行。觀看視頻以獲取更多詳細信息和示例代碼。 – Douglas 2011-02-26 19:34:39