根据选定的表视图行更新UILabel

时间:2015-06-19 14:33:12

标签: ios objective-c uitableview uilabel

我有一个表格视图和一个文本字段。无论该人在该表视图中选择什么,都将显示在文本字段中。

示例:在我的表格视图中选择“一个”“两个”“三个”

如果我选择“一个”,我的桌面视图上会出现一个复选标记,我的文本字段中也会出现“一个”。

我知道如何使用stringByAppendingString将字符串添加到一起,所以当我选择“two”并且仍然选择“one”时,我的标签将显示为“onetwo”

现在我的问题:如果我要选择“一个”选择(或任何其他选择),我怎么能只删除这个连接字符串的某个部分?

示例:如果我按此顺序选择“threeonetwo”并且我想取消选择“one”,我的标签现在将显示为“threetwo”。

谢谢。

更新:这是我到目前为止所做的,而且我被困住了。

首先:我创建了一个可变数组:

NSMutableArray * toBeFilledTableData;

然后我分配了它:

toBeFilledTableData = [[NSMutableArray alloc] init];

然后,如果用户从表视图中选择该选项,我将添加一个对象:

[toBeFilledTableData addObject:@“one”];

我改变主意让文本字段显示为“threeonetwo”,我想在它们之间添加一个分号,所以我希望外观是“三个;一个;两个”。因此创建了一个字符串以在末尾添加分号:

NSString * combinedForces

combinedForces = [toBeFilledTableData componentsJoinedByString:@“;”]; (^但是没有显示我的分号,所以我只是将分号添加到addObject [除非有另一种方法可以做到])

然后我在文本字段中显示了该对象:

textField.text = combinedForces;

截至目前,1。我的列表没有填充,因为我点击了更多选项,并且在每个选项之间插入分号正在成为一个难题。我很感激任何帮助=)

2 个答案:

答案 0 :(得分:2)

您可以使用所选项目维护数组或设置,而不是删除字符串的该部分。

didSelectRowAtIndex路径方法中,将所选字符串添加到数组中(或将其删除)并调用updateLabel方法,该方法根据数组或集合的内容创建字符串。

因此,每次发生更改时都会重新创建字符串。

如果您想知道选择的顺序,请使用NSMutableOrderedSet,如果您不需要知道订单,则可以使用NSMutableSet

答案 1 :(得分:0)

你可以用didSelectRowAtIndexPath&中的以下代码来做到这一点。 didDeselectRowAtIndexPath

NSString *lblString = @"";
    NSArray *indexPathArray = [self.tableView indexPathsForSelectedRows];
    for(NSIndexPath *index in indexPathArray)
    {
        NSString *subStr = [arrayDatasource objectAtIndex:index.row]; //perticular choice from your choice array
        if([indexPathArray lastObject]!=index)
        {
            lblString = [lblString stringByAppendingString:[subStr stringByAppendingString:@";"]];
        }
         else  
        {
           lblString = [lblString stringByAppendingString:subStr];
        }



    }