Ios 更改UITableviewCell上UILabel的文本,但不使用出列机制

Ios 更改UITableviewCell上UILabel的文本,但不使用出列机制,ios,objective-c,uitableview,Ios,Objective C,Uitableview,我在表视图中使用出列机制时遇到问题,所以我决定一次加载所有单元格。 我有一个自定义单元格,上面有标签。 发生的情况是,所有单元格都已加载,但标签上没有任何信息。 这是我的密码 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { } 谢谢大家。如果您在了解如何使用单元重用机制时遇到问题,请在前进之前解决这个问题。UITableView是iO

我在表视图中使用出列机制时遇到问题,所以我决定一次加载所有单元格。 我有一个自定义单元格,上面有标签。 发生的情况是,所有单元格都已加载,但标签上没有任何信息。 这是我的密码

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

}


谢谢大家。

如果您在了解如何使用单元重用机制时遇到问题,请在前进之前解决这个问题。UITableView是iOS的核心构建块之一,使用了对开发至关重要的大多数核心概念

尽管如此,我仍然会尽力帮助你。根据您的代码,我希望您的
prototipo
对象是
nil
。与在
null
上执行操作是错误的其他语言不同,在
nil
上调用选择器不是错误

您可以通过设置断点并遍历代码来确认这一点。

将代码更改为:

static NSString *CellIdentifier = @"MyCell";
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
   cell = [[MyCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:CellIdentifier];
}
Prototipo *prototipo = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.lblIdentificador.text = [prototipo.identificador stringValue];
return cell;
你可以走了


注意:您必须确保
prototipo
不是
nil
,您可以使用
NSLog
再次检查返回值

它不是nil。所有单元格都已加载,但标签上没有任何信息。它可以正常工作。但我不想使用[tableView dequeueReusableCellWithIdentifier:CellIdentifier];我想一次装入所有单元格。数据来自一个表。所以细胞的数量可以改变。在这种情况下我可以使用静态电池吗?可以。而不是使用静态单元标识符“MyCell”。根据数据源命名单元格标识符。e、 g:
NSString*cellIdentifier=[datasource objectAtIndex:indexPatch.row]
。这应该行得通,因为每个细胞都有自己的识别码我刚才试过了。但结果是一样的,所有单元格都加载了,但标签上没有任何信息。很可能您最终会在一次加载所有单元格时受到性能影响,并被迫恢复到将单元格退出队列。你为什么不问如何解决排队问题,而不是问如何加载所有单元格?只是好奇…我只是想简化我的问题。我在另一个场景中遇到了同样的问题,我做了一些研究,问题的原因是出列,这就是为什么我要立即加载单元格。你能解释一下为什么要同时加载所有单元格吗?当然。问题在于,单元格上有一个uiTextField,当我滚动表格时,我在textfield上键入的值会转到另一个单元格。您需要解决阻止您使用正常表格视图单元格加载机制的问题。苹果花了大量的时间寻找最有效的方式来呈现一个表格,这样用户体验就不会太差。试图绕过这一点是一个糟糕的想法,这将给您带来比修复文本视图的代码更大的痛苦。
static NSString *CellIdentifier = @"MyCell";
MyCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
   cell = [[MyCell alloc] initWithStyle:UITableViewCellStyleDefault  reuseIdentifier:CellIdentifier];
}
Prototipo *prototipo = [self.fetchedResultsController objectAtIndexPath:indexPath];
cell.lblIdentificador.text = [prototipo.identificador stringValue];
return cell;