我的UITableViewController
有一个UITableView
,其单元格通过accessoryView
附加了一个按钮。当用户点击它们时,这些按钮可以是selected/deselected
。 table
本身由NSMutableArray
个包含多个NSString
参数的对象组成,其中“name”参数显示在表格中。
我现在要做的是选择按钮时,将指向相应OBJECT
参数的相应"name"
添加到NSMutableArray
。用户没有选择单元格,而是单击连接到单元格的按钮。
以下是selects/deselects
button
cell
中-(void)buttonTouched:(id)sender
{
UIButton *btn = (UIButton *)sender;
if( [[btn imageForState:UIControlStateNormal] isEqual:[UIImage imageNamed:@"CheckBox1.png"]])
{
[btn setImage:[UIImage imageNamed:@"CheckBox2.png"] forState:UIControlStateNormal];
// statement to add object to NSMutableArray
}
else
{
[btn setImage:[UIImage imageNamed:@"CheckBox1.png"] forState:UIControlStateNormal];
// statement to remove object from NSMutableArray
}
}
//Here is my code that shows how I initialize my button and cell in my UITableView
- (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];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
testButton = [UIButton buttonWithType:UIButtonTypeCustom];
[testButton setFrame:CGRectMake(280, 57, 25, 25)];
[testButton setImage:[UIImage imageNamed:@"CheckBox1.png"] forState:UIControlStateSelected];
[testButton setImage:[UIImage imageNamed:@"CheckBox2.png"] forState:UIControlStateNormal];
[testButton setUserInteractionEnabled:YES];
[testButton addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchUpInside];
[testButton setTag:cell.tag];
[cell setAccessoryView:testButton];
//[cell setAccessoryType:UITableViewCellAccessoryCheckmark];
}
// Configure the cell...
TestObject *tObject = [[DataModel sharedInstance].testList objectAtIndex:indexPath.row];
cell.textLabel.text = tObject.testTitle;
return cell;
}
的方法:
{{1}}
我的问题不是将对象实际添加到数组,而是从按钮派生相应的单元格,然后从该单元格中派生出正确的对象。
答案 0 :(得分:0)
您可以为每个按钮添加一个view.tag:例如,将101分配给第一个按钮,102分配给第二个按钮。
此标记对应于数组中的位置,您可以在其中找到更多信息。
答案 1 :(得分:0)
当你这样做时,你需要一种方法将单元格链接到你的按钮,你有几个选择
1-将按钮上的标签设置为数组中元素的相应索引,这样就可以通过tag属性获取单元格,如果要删除单元格,则可能会出现问题更新你的按钮标签。
2-使用字典将按钮映射到您的单元格
因此,如果使用标记来标记索引,则可以使用UITableViewCell的cellForRowAtIndexPath来获取单元格,数据对象也应该位于包含该索引的数据库数组中。 丹尼尔
答案 2 :(得分:0)
我过去做过的一件事就是将按钮的标签设置为单元格的行。这只适用于:
tableView:cellForRowAtIndexPath:
设置按钮的标签(因为出列)对于更复杂的表格,您可能需要从按钮到对象的映射。
答案 3 :(得分:0)
也许您可以使用NSMutableArray
而不是使用NSMutableDictionary
,并为新项目指定一个键,以便更简单地订购。