如何获取选定的行IOS

时间:2012-08-09 05:03:50

标签: iphone objective-c ios xcode

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

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

6 个答案:

答案 0 :(得分: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

答案 1 :(得分:7)

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

该方法会传递indexPath,其中包含已选择的行。如果你想记住其他函数回调,那么在该类中创建一个属性或iVar。

在标题中:

@interface MyTableViewController : UITableViewController {
    NSInteger _selectedRow;
}

在实施中

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
   _selectedRow = indexPath.row;
}

答案 2 :(得分:2)

编辑:存储在NSUserDefault

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

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{
  curRowIndex = indexPath.row
  NSLog(@"Currently Selected Row: %d",curRowIndex);
}

答案 3 :(得分:2)

我这样做了......

NSIndexPath *selectedIndexPath = [table indexPathForSelectedRow];

使用Indexpath我得到了一行。

答案 4 :(得分: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

答案 5 :(得分:0)

我用这个:

if(indexPath.row == 0){
   // do something...
  }else if(indexPath.row == 1){
   // do something else ...
 }