我试图达到以下要求:

条件: 第一行是强制性的,只有 + 按钮其余的都是动态的
+ 和 - 按钮。

即我可以从任何行添加和删除任何行

例如假设我有 4 行,当我从第二行点击 + 按钮时,还会有一个
在第 4 行之后添加的行,假设我单击 - 需要删除第 3 行的按钮。

我的尝试:

第一次尝试

这是我的代码片段:

查看已加载

 dataArray = [[NSMutableArray alloc] init];
 for (int i = 0; i < 1; i++)
 {
    int value = i;
    [dataArray addObject: [NSNumber numberWithInt:value]];
 }

cellForRowAtIndexPath
 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{
     [cell.serviceAdd addTarget:self action:@selector(onAddServiceButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
     [cell.serviceRemove addTarget:self action:@selector(onRemoveButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
     cell.serviceAdd.tag = indexPath.row;
     cell.serviceRemove.tag = indexPath.row;
}

    -(void)onAddServiceButtonClicked:(UIButton*)sender
    {
       //NSLog(@"%ld", (long)sender.tag);
       NSNumber *myNum = dataArray.lastObject;
       NSNumber *bNumber = [NSNumber numberWithInt:[myNum intValue] + 1];
       NSLog(@"%lu", (unsigned long)dataArray.count);
       [dataArray addObject:bNumber];
       NSLog(@"%lu", (unsigned long)dataArray.count);
       [_serviceListTableview reloadData];
    }

    -(void)onRemoveButtonClicked:(UIButton*)sender
    {
        NSLog(@"%ld", (long)sender.tag);
        NSInteger mySenderValue = sender.tag;
        NSNumber *myNum = @(mySenderValue);
        NSLog(@"%lu", (unsigned long)dataArray.count);
        [dataArray removeObject:myNum];
        NSLog(@"%lu", (unsigned long)dataArray.count);
        [_serviceListTableview reloadData];
    }

上面代码的问题:

我的 dataArray 具有(这些是通过单击 + 按钮的任意行添加的。列表将按顺序排列
仅订购)
(
0,
1、
2、
3、
4
)

在此之后,我点击了 - 按钮的第二行,即发件人标签为 1
现在数据数组
(
0,
2、
3、
4
)

ios - UITableView - 如何在 &#43; 和 - 单击上更新数组?-LMLPHP

现在我再次点击(价格 200)第二行,标签是 1
但该条目不会被删除,因为它不在数组中。

第二次尝试:
    -(void)onAddServiceButtonClicked:(UIButton*)sender

在这种方法中,如果
    NSNumber *myNum = dataArray.lastObject;

此行替换为 sender.tag (如在 onRemoveButtonClicked 中实现)

然后当我点击时,dataArray 中的条目是重复的 - 按钮 2 条目将被删除

任何建议都会对我有很大帮助。

最佳答案

我相信与其将按钮标签视为数组中的直接数据,不如将它们视为行索引,因为这就是它们的实际含义。因此,您不应使用 removeObject: 来更新数据模型,而应通过传递 removeObjectAtIndex: 值来使用 tag

关于ios - UITableView - 如何在 + 和 - 单击上更新数组?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32963570/

10-14 20:48
查看更多