Ios cellForRowAtIndexPath的备选方案

Ios cellForRowAtIndexPath的备选方案,ios,cocoa-touch,uitableview,Ios,Cocoa Touch,Uitableview,我正在寻找cellForRowAtIndexPath的替代方法。我试图做的是在我的私有方法中,我检查现有单元格上的文本是否存在于数组中,如果存在,则选择单元格,否则保持取消选择。我了解到cellForRowAtIndexPath仅对可见单元格有效,如果该单元格不可见,则返回nil。以下是我目前的代码: - (void)selectCells:(NSArray *)array { for (int row = 0; row < [self.tableView numberOfRows

我正在寻找cellForRowAtIndexPath的替代方法。我试图做的是在我的私有方法中,我检查现有单元格上的文本是否存在于数组中,如果存在,则选择单元格,否则保持取消选择。我了解到cellForRowAtIndexPath仅对可见单元格有效,如果该单元格不可见,则返回nil。以下是我目前的代码:

- (void)selectCells:(NSArray *)array
{
    for (int row = 0; row < [self.tableView numberOfRowsInSection:1]; row ++)
    {
        NSIndexPath *indexPath = [NSIndexPath indexPathForRow:row 1];

        UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

        if ([array containsObject:cell.textLabel.text] && !cell.isSelected)
        {
           [self.tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
        }
    }
}
-(void)选择单元格:(NSArray*)数组
{
对于(int row=0;row<[self.tableView numberofrowsinssection:1];row++)
{
nsindepath*indepath=[nsindepath indexPathForRow:row 1];
UITableViewCell*cell=[self.tableView cellForRowAtIndexPath:indexPath];
if([array containsObject:cell.textlab.text]&&&!cell.isSelected)
{
[self.tableView SelectRowatineXpath:indexPath动画:无滚动位置:UITableViewScrollPositionNone];
}
}
}
我还可以用什么来实现这一点

我正在检查退出单元格上的文本是否存在于数组中

这听起来像是一个根本问题。在模型-视图-控制器范例中,视图负责显示数据并与用户交互,而模型负责存储和操作数据。你不应该看一个单元格的内容并据此做出决定;您应该查看模型中的数据

UITableView
的工作方式与之相同,因为如果您遵循MVC,则完全没有必要保留不可见的单元格。每当表格需要显示一个新单元格时,它都会通过调用
-tableView:cellforrowatinexpath:
来请求您输入该单元格

我正在寻找一种替代方法来获取tableview上的所有单元格

这些细胞不是同时存在的。可以想象,您可以使用不同的索引路径调用数据源的
-tableView:cellforrowatinexpath:
方法,就像表一样,这将返回每个单元格。但这可能不是正确的解决方案;您需要知道表的数据存储在哪里,以便首先填充表的单元格,因此您应该直接查看数据

我正在检查退出单元格上的文本是否存在于数组中

这听起来像是一个根本问题。在模型-视图-控制器范例中,视图负责显示数据并与用户交互,而模型负责存储和操作数据。你不应该看一个单元格的内容并据此做出决定;您应该查看模型中的数据

UITableView
的工作方式与之相同,因为如果您遵循MVC,则完全没有必要保留不可见的单元格。每当表格需要显示一个新单元格时,它都会通过调用
-tableView:cellforrowatinexpath:
来请求您输入该单元格

我正在寻找一种替代方法来获取tableview上的所有单元格


这些细胞不是同时存在的。可以想象,您可以使用不同的索引路径调用数据源的
-tableView:cellforrowatinexpath:
方法,就像表一样,这将返回每个单元格。但这可能不是正确的解决方案;您需要知道表的数据存储在哪里,以便首先填充表的单元格,因此您应该直接查看数据。

填充单元格时,使用唯一标识符将所有数据存储在一个数组中。如果你没有太多的细胞,这应该是可行的。然后您可以使用self.ray或任何您称之为它的东西,并在索引路径处获取对象。我会按照建议将数据分开,然后在cellForIndexPath中呈现单元格时,确保根据数据选择或取消选择单元格


填充单元格时,使用唯一标识符将所有单元格存储在一个数组中。如果你没有太多的细胞,这应该是可行的。然后您可以使用self.ray或任何您称之为它的东西,并在索引路径处获取对象。我会按照建议将数据分开,然后在cellForIndexPath中呈现单元格时,确保根据数据选择或取消选择单元格


请澄清:您要替换UITableView中的CellForRowatineXpath还是UITableViewDelegate中的CellForRowatineXpath?它们是两个完全不同的东西。(你不能真正“替换”其中任何一个——它们必须存在并被调用。)我不想替换实际的CellForRowatineXpath。我正在寻找一种替代方法来获取tableview上的所有单元格。因此,在上面的方法中,我使用cellForRowAtIndexPath来获取细胞,但我知道它不会提供不可见的细胞。我想在上面的方法中得到一些东西,可以返回我所有的单元格或建议,以获得我想要的最佳方式。好吧,你没有回答我的问题。但你问错人了。您不需要维护所有单元格,只需维护单元格中的数据。我发现包含NSMutableDictionarys的NSMutableArray可以很好地实现这一点——每个单元格属性都是相应字典中的一个名称/值对。请明确:要替换UITableView中的CellForRowatineXpath还是UITableViewDelegate中的CellForRowatineXpath?它们是两个完全不同的东西。(你不能真正“替换”其中任何一个——它们必须存在并被调用。)我不想替换实际的CellForRowatineXpath。我正在寻找一种替代方法来获取tableview上的所有单元格。因此,在上面的方法中,我使用cellForRowAtIndexPath来获取细胞,但我知道它不会提供不可见的细胞。我想在上面的方法中得到一些东西,可以返回我所有的单元格或建议,以获得我想要的最佳方式。好吧,你没有回答我的问题。但你问错人了。你不知道