在我的应用中,我有一个表格,每行显示一个单元格。 在Interface Builder中,我将一个按钮拖到单元格上,将其设置为Dark Info按钮,并将其连接到IBAction。 这工作正常。 只是,我希望按钮的行为不同,具体取决于按钮单元格所在表格的行。 我如何获得该行索引?
我意识到我可能会对对象层次结构缺乏基本的了解,但我希望你们能原谅我
由于 Sjakelien
答案 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它)。
然后,您将在单元格设置期间设置此属性,并且可以在消息方法
中检索此属性