2

我有一个“UITableView”,我正在尝试处理选定的行并相应地使用它的数据,

我已经编写了必要的代码来获取选定的行,不幸的是它似乎不起作用

如果我什么都不选,

NSIndexPath *path = [tableViewDoctorName indexPathForSelectedRow];
int rowSelected = path.row;

rowSelected 的值为 0;

但是,当我选择该行时,它又是 0。

我的表中只有一行,我不确定这是否重要?

如何准确确定“UITableView”中的选定行?

4

4 回答 4

1

设置 UITableView 委托并实现此方法:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
           int rowSelected = indexPath.row;
 }        
于 2013-09-03T12:32:30.923 回答
1

indexPath.row第一行从0开始,你只有一行,然后它总是返回0

但是,如果您想获取所选 Row 的数据,那么您可以委托UITableView.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{  
  // here you can get directly indexPath.row so you can get required data;
}
于 2013-09-03T12:34:05.803 回答
1

当然,你的 tableView 中有多少行很重要:如果你只有 1 行,那么它的 indexpath 是 (0 ,0) 并且在这种情况下这是唯一可以(选择)的行。

所选行通常突出显示(蓝色),因此如果您不希望此蓝色选择留在屏幕上,您可能希望将其存储在 tableView 委托的另一个属性中。

通常,在您的UITableViewDelegate

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // deselect the row, to avoid the 'blue' selection to stay on-screen
    [tableView deselectRowAtIndexPath:indexPath animated:YES];

    // save your own copy of 'last' selected indexPath
    self.mySavedIndexPath = indexPath;    
}
于 2013-09-03T12:35:21.273 回答
1
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    _selectedIndexPath = indexPath;
}

在函数外部,使用它来获取选定的行,

 NSIndexPath *indexPath = [NSIndexPath indexPathForRow: _selectedIndexPath.row inSection:0];
int rowSelected = indexPath.row;
于 2013-09-03T12:38:36.447 回答