30

我试图找到UITableViewCell如下选择:

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 

       reuseIdentifier:CellIdentifier];

  }
    if   ([indexPath row] == [tableView cellForRowAtIndexPath:indexPath.row]) // i want to place value of selected row to populate the buttons 

        //([indexPath row] == 0)

        //(indexPath.row == ![self cellIsSelected:indexPath]) 

    {
        UIButton *AddComment = [UIButton buttonWithType:UIButtonTypeCustom]; // custom means transparent it takes shape same with backgroup image

        [AddComment addTarget:self 
                       action:@selector(TestBtns:)
             forControlEvents:UIControlEventTouchDown];

        // [AddComment setTitle:@"1" forState:UIControlStateNormal];

        AddComment.frame = CGRectMake(9.0, 128.0, 96.0, 26.0);

        [cell.contentView addSubview:AddComment];

        UIImage *buttonAddComment = [UIImage imageNamed:@"addcomment.png"];

        [AddComment setBackgroundImage:buttonAddComment forState:UIControlStateNormal];

        [cell.contentView addSubview:AddComment]; 


    }

如何实现这一点,请您指导我,我在哪里做错了。

4

6 回答 6

108

目标 C

 NSIndexPath *selectedIndexPath = [tableView indexPathForSelectedRow];

SWIFT代码

let indexPathForSelectedRow = self.tableView.indexPathForSelectedRow
于 2014-02-27T08:49:55.357 回答
16

使用这个委托方法UITableView

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
   NSLog(@"%d", indexPath.row); // you can see selected row number in your console;
}
于 2013-09-05T13:14:58.557 回答
6

在 UITableViewDataSource 委托中有一个方法- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

它返回包含所选部分和所选行的 NSIndexPath 对象。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSLog(@"Selected section>> %d",indexPath.section);
    NSLog(@"Selected row of section >> %d",indexPath.row);
}

确保在使用前设置tableview的数据源,否则不会调用此方法

于 2013-09-05T13:20:36.693 回答
2
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    int a = indexPath.row;
    NSLog(@"index: %i",a);
}
于 2015-06-15T15:49:46.277 回答
1

这是帮助您确定已选择的单元格的内置方法。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // you can use "indexPath" to know what cell has been selected as the following
    NSLog(@"Selected row is %@", indexPath);
}

顺便说一下,当您创建 TableViewController 时已经给出了该方法,您可能只需要取消注释它。

希望你觉得它有帮助

于 2013-09-05T13:20:46.623 回答
1

我认为您要做的不是单击表格视图单元格的索引,而是要知道单击了哪个单元格。

要在分配每个单元格时知道这一点,请将indexpath.row值分配为创建的单元格的标记,然后单击将表格视图作为父级并尝试使用该标记获取其子视图(单元格)

[带有标签的表格视图视图:indexpath.row]

于 2014-03-03T13:24:06.883 回答