UITableViewCell的textLabel.text被省略号部分替代

问题描述

|| 我有一个带有几个UITableViewcells(UITableViewCellStyleSubtitle)的UITableView。当用户点击一个单元格时,我按下了一个细节VC,该VC允许用户更改单元格的文本。当我弹出此ViewController时,单元格上的文本以省略号出现缩写: 之前: 后: 将文本更改为\“ Wartyrl \”,然后弹出详细信息VC。 如果我点击其他任何单元格,则省略号消失,并显示正确的文本。是什么原因造成的? 这是更改单元格文本的代码(通过委托方法):
#pragma mark - FRREditTaskViewControllerDelegate
-(void) editTaskViewController:(FRREditTaskViewController *)sender 
          didChangeNameForTask:(FRRFlatTask *)aTask{
    NSIndexPath *idx = [NSIndexPath indexPathForRow:[self.pendings indexOfObject:aTask] inSection:0];
    [self.tableView cellForRowAtIndexPath:idx].textLabel.text = aTask.name;
}
顺便说一句,在弹出详细信息VC之前,并且仍然隐藏UITableViewController时,将调用此代码。我不知道这是否相关。     

解决方法

        似乎textLabel犹豫是否要调整其宽度。如果太坚决不能更改,只需使用using1直接重新加载tableView。 如果您不想重新加载整个tableView,则可以仅重新加载特定的单元格,如下所示。
NSIndexPath *idx = [NSIndexPath indexPathForRow:[self.pendings indexOfObject:aTask] inSection:0];
[self.tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:idx] withRowAnimation:UITableViewRowAnimationFade];
更改单元格的textLabel的文本时,这将显示漂亮的淡入淡出动画。     ,        创建单元格时,UILabel的大小仅足以处理初始文本(它不会动态调整大小)。更改文本后(
didChangeNameForTask
方法的结尾)调用
[self.tableView reloadData]
应使其正确显示。     ,        您可以叫
[cell.textLabel sizeToFit]
。 在许多情况下,更新内部数据并致电
reloadRowsAtIndexPaths:withRowAnimation:
更干净。这样一来,您就不会有太多的内容困扰着单元的实现细节(当您改变主意如何布局时)。它还可以确保您的真实数据与单元格匹配。 在大多数情况下,更好的方法是创建一个名为
TaskTableViewCell
UITableViewCell
子类。您将其交给
Task
,它会用KVO观察
Task
,管理自己的布局(包括在需要时调用
sizeToFit
)。这样,您就不需要委托方法来告诉您何时更新。任务更改时,单元会自动更新。这会将所有布局问题移到单元类中,并移出数据源。     ,        
-(void) editTaskViewController:(FRREditTaskViewController *)sender 
      didChangeNameForTask:(FRRFlatTask *)aTask{

    NSIndexPath *idx = [NSIndexPath indexPathForRow:[self.pendings indexOfObject:aTask] inSection:0];


    UITableViewCell *thiscell=[self.tableView cellForRowAtIndexPath:idx];

    thiscell.textLabel.text =[nsstring stringwithFormat:@\"%@\",aTask.name];

    [self.tableView reloadRowsAtIndexPaths: [NSArray arrayWithObject:idx] withRowAnimation:NO];//if u dont want to use reload data then use like this or use

    //- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation


}
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...