ios - 如何检测UITableView中项目列表中是否以及哪个项目被点击

时间:2012-12-14 22:28:32

标签: ios uitableview ios5

我有一个填充列表的文本项列表。它的代码如下所示:

// CREATING EACH CELL IN THE LIST
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *cellIdentifier = @"business";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

    if(!cell){
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
        cell.textLabel.font = [UIFont fontWithName:@"Helvetica" size:17];
        cell.textLabel.numberOfLines = 0;
        cell.textLabel.lineBreakMode = UILineBreakModeWordWrap;
    }



    cell.textLabel.text = [cellTitleArray objectAtIndex:indexPath.row];


    // CLOSE THE SPINNER
    [spinner stopAnimating];

    // return the cell for the table view
    return cell;
}




-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    UIFont *cellFont = [UIFont fontWithName:@"Helvetica" size:17];
    CGSize constraintSize = CGSizeMake(self.itemList.frame.size.width, MAXFLOAT);

    CGSize labelSize = [[cellTitleArray objectAtIndex:indexPath.row] sizeWithFont:cellFont constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

    return labelSize.height + 30;
}


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

}

我想要做的是让这个人可以选择编辑每个项目。这样做的一种方法是将其设为2列列表,并在右侧列中创建类似“>”的字符所以他们可以点击它,它会给他们一个编辑项目的选项。

在这种情况下如何做到这一点?

谢谢!

2 个答案:

答案 0 :(得分:2)

要捕获行,请单击:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // Use indexPath.row to find your selection
    ...
}

如果您想要仅按一下按钮或类似按钮:

[self.buttono addTarget:self action:@selector(doAction) forControlEvents:UIControlEventTouchUpInside];

如果您想使用accessoryType,请将此代码放在cellForRowAtIndexPath方法中。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // Pick an indicator to suit your need/look
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
}

然后你就点击这样的东西

- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
    // Perform action for this click on row indexPath.row
}

如果indexPath.row不足以区分您的点击次数(我无法理解为什么会出现这种情况!),那么您可以随时在公开按钮上使用setTag

答案 1 :(得分:1)

  [self.tableView indexPathForSelectedRow];

  [self.tableView indexPathForCell:sender]; //if you have a sender