1

我如何知道当前在表视图中选择了哪一行,而不使用任何全局变量来使用此方法存储最后单击的行。

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

6 回答 6

8

如果您在 outlet 属性中有 UITableView,则可以像这样获取选定的行:

[tableView indexPathForSelectedRow]

这将返回一个 indexPath,其中包含所选行的行号和节号。

请参阅http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html#//apple_ref/occ/instm/UITableView/indexPathForSelectedRow

于 2012-08-09T05:17:17.770 回答
6

您不需要全局变量。 如果您需要跟踪当前选定的行,您可以在作为表视图回调委托的类中创建一个成员变量 (iVar)。

该方法将向您传递具有所选行的 indexPath。如果您想记住其他函数回调,请在该类中创建一个属性或 iVar。

在标题中:

@interface MyTableViewController : UITableViewController {
    NSInteger _selectedRow;
}

在实施中

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
   _selectedRow = indexPath.row;
}
于 2012-08-09T05:06:18.910 回答
2

编辑:存储在 NSUserDefault

在这个委托方法中,您可以在 .h 文件中获取当前选定的行添加 int curRowIndex

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
  curRowIndex = indexPath.row
  NSLog(@"Currently Selected Row: %d",curRowIndex);
}
于 2012-08-09T05:07:05.893 回答
2

我已经这样做了....

NSIndexPath *selectedIndexPath = [table indexPathForSelectedRow];

使用 Indexpath 我得到了行。

于 2012-08-09T05:15:11.727 回答
1

如果您的表包含多个部分,那么您还必须跟踪该部分。为此,您必须创建一个NSIndexPath.

@interface MyTableViewController : UITableViewController {
    NSIndexPath *obj_IndexPath;
}

在实现文件中,

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

       NSLog(@"%d",obj_IndexPath.row);
       NSLog(@"%d",obj_IndexPath.section);

}

并且不要release obj_IndexPath忘记dealloc方法

于 2012-08-09T06:03:14.350 回答
0

我用这个:

if(indexPath.row == 0){
   // do something...
  }else if(indexPath.row == 1){
   // do something else ...
 }
于 2013-10-03T12:49:36.123 回答