如何找到UIButton的行索引是一个TableCell? (苹果手机)

时间:2009-10-20 13:41:50

标签: iphone uitableview uibutton

在我的应用中,我有一个表格,每行显示一个单元格。 在Interface Builder中,我将一个按钮拖到单元格上,将其设置为Dark Info按钮,并将其连接到IBAction。 这工作正常。 只是,我希望按钮的行为不同,具体取决于按钮单元格所在表格的行。 我如何获得该行索引?

我意识到我可能会对对象层次结构缺乏基本的了解,但我希望你们能原谅我

由于 Sjakelien

4 个答案:

答案 0 :(得分:1)

如果您没有先设置一些数据,这绝对不容易。如果可以,可以使用NSDictionary按钮是键,值是索引路径,只要从-tableView:cellForRowAtIndexPath:返回单元格,就会更新。像这样:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ...
    [indexDict setValue:indexPath forKey:theButton];
    return cell;
}



- (void) buttonPressed:(UIButton *)button {
    NSIndexPath *indexPath = [indexDict valueForKey:button];
    ...
}

答案 1 :(得分:1)

您可以维护标签。拖放按钮时,检查界面构建,您将看到这些按钮的“tag”属性。为每个按钮分配不同的值(我假设您对不同的行有不同的按钮,如果您对不同的行具有相同的单元标识符,则此解决方案将不起作用)。当您收到标签值的事件检查时。 我的工作遇到了类似的问题,我为每个创建的按钮标签维护NSArray。

答案 2 :(得分:0)

在你的tableView委托和数据源方法(查看文档!)中你有几种方法,最好的方法是

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

在您的实现中删除此方法并说出类似

的内容
    switch (indexPath.row) {
        case 0:
//set variable or do method based on row 0 (first row)
            break;
        case 1:
//set variable or do method based on row 1 (second row)
            break;
        case 2:
//set variable or do method based on row 2 (third row)
            break;
    }//and so on
}

答案 3 :(得分:0)

另一种方法是在视图中更改UIButton的基类, 然后使用这个其他类基本上扩展了一个UIButton,添加了一个NSInteger行@property(记得@synthesize它)。

然后,您将在单元格设置期间设置此属性,并且可以在消息方法

中检索此属性