如何根据iOS中UITableView中选择的单元格将对象插入NSMutableArray?

时间:2013-01-08 19:52:04

标签: ios uitableview nsmutablearray

我的UITableViewController有一个UITableView,其单元格通过accessoryView附加了一个按钮。当用户点击它们时,这些按钮可以是selected/deselectedtable本身由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}}

我的问题不是将对象实际添加到数组,而是从按钮派生相应的单元格,然后从该单元格中派生出正确的对象。

4 个答案:

答案 0 :(得分:0)

您可以为每个按钮添加一个view.tag:例如,将101分配给第一个按钮,102分配给第二个按钮。

此标记对应于数组中的位置,您可以在其中找到更多信息。

答案 1 :(得分:0)

当你这样做时,你需要一种方法将单元格链接到你的按钮,你有几个选择

1-将按钮上的标签设置为数组中元素的相应索引,这样就可以通过tag属性获取单元格,如果要删除单元格,则可能会出现问题更新你的按钮标签。

2-使用字典将按钮映射到您的单元格

因此,如果使用标记来标记索引,则可以使用UITableViewCell的cellForRowAtIndexPath来获取单元格,数据对象也应该位于包含该索引的数据库数组中。 丹尼尔

答案 2 :(得分:0)

我过去做过的一件事就是将按钮的标签设置为单元格的行。这只适用于:

  • 您表中只有一个部分
  • 你总是在tableView:cellForRowAtIndexPath:设置按钮的标签(因为出列)
  • 您的表格是只读的(意味着您不允许删除或移动单元格)

对于更复杂的表格,您可能需要从按钮到对象的映射。

答案 3 :(得分:0)

也许您可以使用NSMutableArray而不是使用NSMutableDictionary,并为新项目指定一个键,以便更简单地订购。