我如何知道当前在表视图中选择了哪一行,而不使用任何全局变量来使用此方法存储最后一次单击的行。
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
答案 0 :(得分:8)
如果您在outlet属性中有UITableView,则可以像这样获取所选行:
[tableView indexPathForSelectedRow]
将返回包含所选行的行号和节号的indexPath。
答案 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 ...
}