Ios UITableViewCell知道单击/选择了哪个单元格

Ios UITableViewCell知道单击/选择了哪个单元格,ios,xcode,uitableview,Ios,Xcode,Uitableview,我知道有一种方法可以检测选择了哪个UITableViewCell: - (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath { } 但我不想知道所选的行,我想知道单元格的内容是什么,我想根据它做些什么。有没有一种方法可以标记一个单元格? 为了更好的理解,假设我有四个细胞1,2,3和4。当我对它们重新排序时,我的顺序是1、4、2、3,并且我想在另一个视图中显

我知道有一种方法可以检测选择了哪个UITableViewCell:

- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {

}
但我不想知道所选的行,我想知道单元格的内容是什么,我想根据它做些什么。有没有一种方法可以标记一个单元格? 为了更好的理解,假设我有四个细胞1,2,3和4。当我对它们重新排序时,我的顺序是1、4、2、3,并且我想在另一个视图中显示该值,那么当我选择第二行时,它将显示2而不是4。

您可以调用

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
方法从
表视图:didSelectRowatineXpath:
实现获取单元格,如下所示:

- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    ...
}
但是,这不是访问(尤其是修改)表内容的正确方法。相反,您应该访问从中获取表信息的模型,并在其中进行所有修改。这样,当当前单元格的视觉效果从屏幕上滚下并返回时,更改将“保持”不变。

- (UITableViewCell *)cellForRowAtIndexPath:(NSIndexPath *)indexPath
方法从
表视图:didSelectRowatineXpath:
实现获取单元格,如下所示:

- (void) tableView: (UITableView *) tableView didSelectRowAtIndexPath: (NSIndexPath *) indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
    ...
}

但是,这不是访问(尤其是修改)表内容的正确方法。相反,您应该访问从中获取表信息的模型,并在其中进行所有修改。这样,当当前单元格的视觉效果从屏幕上滚下并返回时,更改将“粘住”。

您可以通过didselect委托方法访问所选单元格,如下所示

 UITableViewCell *lab = [tableView cellForRowAtIndexPath:indexPath];
    UILabel *selectedCellLabelText = lab.textLabel.text;

您可以在didselect委托方法中访问所选单元格,如下所示

 UITableViewCell *lab = [tableView cellForRowAtIndexPath:indexPath];
    UILabel *selectedCellLabelText = lab.textLabel.text;

首先,您可以在第二个类中定义NSString的属性,以访问与特定单元格内容相对应的值,arrayData是存储值的数组,例如1、2、3、4、5,然后在第一个类中编写以下代码:-

- (void) tableView:(UITableView *) tableView didSelectRowAtIndexPath:(NSIndexPath *) indexPath
{
    SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

    secondView.stringValue = [arrayData objectAtIndex:indexPath.row];

    [self.navigationController pushViewController:secondView animated:YES];    
}

首先,您可以在第二个类中定义NSString的属性,以访问与特定单元格内容相对应的值,arrayData是存储值的数组,例如1、2、3、4、5,然后在第一个类中编写以下代码:-

- (void) tableView:(UITableView *) tableView didSelectRowAtIndexPath:(NSIndexPath *) indexPath
{
    SecondViewController *secondView = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];

    secondView.stringValue = [arrayData objectAtIndex:indexPath.row];

    [self.navigationController pushViewController:secondView animated:YES];    
}

据我所知有三种方法

1) 通过调用[tableView cellForRowAtIndexPath:indexPath]访问该单元格。 现在,您可以将单元格的数据与模型进行比较。i、 e.您可以使用NSPredicate获取模型中所选行数据的索引值(从中填充表格单元格)

2) 当您重新排列表行时,也只需更改模型即可。例如,第4行变为第2行,只需从第4位删除对象并添加到第2位,即可对模型(可能是ArrayList)重新排序。所以,当您删除表行时,它将是该行模型数据的相同索引号


3) 可以标记每个视图。但这是代码冗余。你可以不这样做就完成这样的事情。我将选择第1个或第2个选项(我认为第2个选项最好只使用您的模型/阵列来保存记录)。

据我所知,有三种方法

1) 通过调用[tableView cellForRowAtIndexPath:indexPath]访问该单元格。 现在,您可以将单元格的数据与模型进行比较。i、 e.您可以使用NSPredicate获取模型中所选行数据的索引值(从中填充表格单元格)

2) 当您重新排列表行时,也只需更改模型即可。例如,第4行变为第2行,只需从第4位删除对象并添加到第2位,即可对模型(可能是ArrayList)重新排序。所以,当您删除表行时,它将是该行模型数据的相同索引号


3) 可以标记每个视图。但这是代码冗余。你可以不这样做就完成这样的事情。我将选择第1个或第2个选项,而不是此选项(我认为第2个选项最好仅用于记录您的型号/阵列)。

谢谢。我不想访问或修改内容,抱歉误解,我只想知道选择了哪个单元格,以便显示正确的视图。谢谢。我不想访问或修改内容,抱歉误解,我只想知道选择了哪个单元格,以便显示正确的视图。