目前只有2个细胞.第一个显示日期.当表首次加载时,它会在第一个单元格UILabel中将当前日期显示为字符串.
当我选择第一个单元格时,我会出现一个自定义类来处理所有日期选择.选择日期后,会d出此视图,然后返回到表格视图.
在 – (voID)vIEwDIDAppear上,重新加载tablevIEws数据并显示新选择的日期.
但是,第一个单元格中的标签不会更新.
令人困惑的是,如果我有多个单元格都显示相同的数据,这些将全部刷新并显示新的日期,如预期的那样.看起来索引:0处的单元格行不会刷新.
进一步混淆的是当我查询单元格的UILabel的字符串值时,它返回正确的日期.
- (UItableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath{ static Nsstring *CellIDentifIEr = @"Cell"; UItableVIEwCell *cell = [tableVIEw dequeueReusableCellWithIDentifIEr:CellIDentifIEr]; if (cell == nil) { cell = [[UItableVIEwCell alloc] initWithStyle:UItableVIEwCellStyleDefault reuseIDentifIEr:CellIDentifIEr]; // // clears the grouped style border from each table cell // UIVIEw *clearBgVIEw = [[UIVIEw alloc]initWithFrame:CGRectZero]; [cell setBackgroundVIEw:clearBgVIEw]; // label UILabel *dl = [[UILabel alloc]initWithFrame:CGRectMake(70.0f,10.0f,screenWIDth-100,50)]; [self setDetailsLabel:dl]; dl = nil; [[self detailsLabel] setBackgroundcolor:[UIcolor colorWithRed:.1 green:.1 blue:.1 Alpha:.1 ]]; [[self detailsLabel] setTextcolor:[UIcolor colorWithRed:1.0f green:1.0f blue:1.0f Alpha:.3f]]; //icon for each cell UIImageVIEw *ci = [[UIImageVIEw alloc]initWithFrame:CGRectMake(10.0f,50.0f,50.0f)]; [ci setBackgroundcolor:[UIcolor colorWithRed:.2 green:.2 blue:.2 Alpha:.2]]; [self setCellicon:ci]; ci = nil; // // set up vIEws // [cell addSubvIEw:[self cellicon]]; [cell addSubvIEw:[self detailsLabel]]; } // Configure the cell... [cell setSelectionStyle:UItableVIEwCellSelectionStyleNone]; //populate each by row. Nsstring *datedisplay = [self formatDate:[self dateCaught]]; NSLog (@"date is %@",datedisplay); [[self detailsLabel] setText:[self formatDate:[self dateCaught]]]; switch (indexPath.row) { //this needs to be an integer,so return the row of the indexPath. case 0: NSLog (@"text for the cell is %@",[[self detailsLabel]text]); break; default: break; }return cell;
}
解决方法 问题与你传递detailsLabel的方式有关.你把它保存在自己的财产或ivar中[self setDetailsLabel:dl];
但是只有在单元格无法重复使用时才设置它.当您重复使用单元格时,自我的detailsLabel将设置为先前运行的标签,从而导致各种问题.
最干净的解决方案是创建自己的类,从UItableVIEwCell派生,将创建标签,图标,背景颜色等的初始化代码移动到指定的初始化程序中,并创建用于设置标签文本的属性.有了这个类,您就可以按如下方式简化代码:
UIMyCustomtableVIEwCell *cell = [tableVIEw dequeueReusableCellWithIDentifIEr:CellIDentifIEr];if (cell == nil) { cell = [[UIMyCustomtableVIEwCell alloc] initWithStyle:UItableVIEwCellStyleDefault reuseIDentifIEr:CellIDentifIEr];}[cell setSelectionStyle:UItableVIEwCellSelectionStyleNone];[[cell detailsLabel] setText:[self formatDate:[self dateCaught]]];// ^--- detailsLabel can be moved to UIMyCustomtableVIEwCell Now总结
以上是内存溢出为你收集整理的ios – UITableView自定义单元格无法刷新全部内容,希望文章能够帮你解决ios – UITableView自定义单元格无法刷新所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)