gpt4 book ai didi

ios - UITableView - 如何在 + 和 - 单击时更新数组?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:57:31 25 4
gpt4 key购买 nike

我试图达到以下要求:

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

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

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

我的尝试:

第一次尝试

这是我的代码片段:

ViewDidLoad

 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个 )

enter image description here

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

第二次尝试:

    -(void)onAddServiceButtonClicked:(UIButton*)sender

在这个方法中如果

    NSNumber *myNum = dataArray.lastObject; 

这一行替换为 sender.tag (就像在 onRemoveButtonClicked 中实现的一样)

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

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

最佳答案

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com