我如何知道当前在表视图中选择了哪一行,而不使用任何全局变量来使用此方法存储最后单击的行。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
我如何知道当前在表视图中选择了哪一行,而不使用任何全局变量来使用此方法存储最后单击的行。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
如果您在 outlet 属性中有 UITableView,则可以像这样获取选定的行:
[tableView indexPathForSelectedRow]
这将返回一个 indexPath,其中包含所选行的行号和节号。
您不需要全局变量。 如果您需要跟踪当前选定的行,您可以在作为表视图回调委托的类中创建一个成员变量 (iVar)。
该方法将向您传递具有所选行的 indexPath。如果您想记住其他函数回调,请在该类中创建一个属性或 iVar。
在标题中:
@interface MyTableViewController : UITableViewController {
NSInteger _selectedRow;
}
在实施中
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
_selectedRow = indexPath.row;
}
编辑:存储在 NSUserDefault
在这个委托方法中,您可以在 .h 文件中获取当前选定的行添加 int curRowIndex
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
curRowIndex = indexPath.row
NSLog(@"Currently Selected Row: %d",curRowIndex);
}
我已经这样做了....
NSIndexPath *selectedIndexPath = [table indexPathForSelectedRow];
使用 Indexpath 我得到了行。
如果您的表包含多个部分,那么您还必须跟踪该部分。为此,您必须创建一个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
方法
我用这个:
if(indexPath.row == 0){
// do something...
}else if(indexPath.row == 1){
// do something else ...
}