我與iOS中tableviews
工作。滾動時重新加載可重用單元格。的iOS滾動的tableView可重複使用的電池重裝
所以,在細胞內部示例 - textfields
- 用於更新時,它一度消失在滾動。我通過使用Array
解決了這個問題,它保存了所有單元格中的所有文本,但我想知道是否有更好的方法來解決這個問題。
謝謝。
我與iOS中tableviews
工作。滾動時重新加載可重用單元格。的iOS滾動的tableView可重複使用的電池重裝
所以,在細胞內部示例 - textfields
- 用於更新時,它一度消失在滾動。我通過使用Array
解決了這個問題,它保存了所有單元格中的所有文本,但我想知道是否有更好的方法來解決這個問題。
謝謝。
你在描述的是如何使用tableviews!該的tableView是顯示器,而不是存儲和可重複使用的電池是隻有那些當前顯示
你是正確使用數組(或集合)來保存數據,只是使用的tableView顯示它
內存管理(以釋放內存)未在當前屏幕顯示其僅在內存中保留其當前在屏幕上顯示,所以你必須存儲文本從tableview中分離這些細胞的tableview去除細胞記憶。
你的問題可能是因爲多線程。如果你是從一個GCD操作或任何的NSOperation(不同的線程)重新加載數據,那麼你必須使用下面的代碼來獲取句柄到主線程
dispatch_sync(dispatch_get_main_queue(), ^{
//perform the reload activity
});
使用字符串數組你存儲所有文本框的數據在tableview中。 使用代理方法UITableView
可以更有效地實現。
-(void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
MyCell * mc = (MyCell *) cell;
names[indexPath.row] = mc.myTf.text;
}
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
MyCell * mc = (MyCell *) cell;
mc.myTf.text = names[indexPath.row];
}
這裏,MyCell是具有UITextField
的自定義單元格。名稱[]是在類範圍聲明的NSString
數組,如NSString * names[20]
。
是的,你是做正確的,因爲細胞被重用你需要保存的數據,這樣的事情 -
1。有一個數組來保存你的數據。
2。每當您對textField進行任何更改時都要更新數組,以便您的UI和數據保持同步。
您需要定義cellIdentifier獨特。然後使用唯一標識符創建每個單元。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString *CellIdentifier = [NSString stringWithFormat:@"Cell%dR%d",indexPath.section,indexPath.row];
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell == nil)
{
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier];
//your logic here
}
return cell;
}
這是不清楚你的問題,你是什麼意思:'消失一旦滾動over'? –
當我向下滾動,單元格消失時,使用自定義單元格類將解決此問題 – Mayur
@RASS,因此,我將其數據保存在數組中,以便當我再次向上滾動時可以恢復它。 – Sob7y