Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iStepper覆盖iOS中自定义单元格中的UILabel值_Ios_Uitableview_Label_Uistepper - Fatal编程技术网

iStepper覆盖iOS中自定义单元格中的UILabel值

iStepper覆盖iOS中自定义单元格中的UILabel值,ios,uitableview,label,uistepper,Ios,Uitableview,Label,Uistepper,我有一个UITableViewController,它由一个TableView和一个UILabel组成UITableViewSource通过自定义UITableViewCell将数据提供给TableViewUITableViewCell由一个可添加项目的步进器组成,标签保存该值 当用户点击步进器时,我想更新UIViewController中的UILabel,而我似乎无法让它工作 非常感谢任何帮助/提示!这是我的测试项目中的示例代码,有一堆未使用的代码,但这只是一个测试,所以我让它存在 谢谢 代码

我有一个
UITableViewController
,它由一个
TableView
和一个
UILabel
组成
UITableViewSource
通过自定义UITableViewCell将数据提供给
TableView
UITableViewCell
由一个可添加项目的步进器组成,标签保存该值

当用户点击步进器时,我想更新
UIViewController
中的
UILabel
,而我似乎无法让它工作

非常感谢任何帮助/提示!这是我的测试项目中的示例代码,有一堆未使用的代码,但这只是一个测试,所以我让它存在

谢谢

代码是

我的自定义单元格类是“StepperDetailsCell”

pragma标记-步进动作法

-(void)stepperValuechanges:(UIStepper *)sender{

    CGPoint stepperPosition = [sender convertPoint:CGPointZero toView:self.tableView];
    indexPath1 = [self.tableView indexPathForRowAtPoint:stepperPosition];

    if (indexPath1 != nil )
    {
        float val = sender.value;
        valueInt = (int)val;

        [self.quantityArr replaceObjectAtIndex:indexPath1.row withObject:[NSString stringWithFormat:@"%i",valueInt]];
        NSLog(@"%@",self.quantityMDict);
    }

    [self.tableView reloadData];

}

在这里,一切都正常工作,但每当从tableview底部加载新的单元格时,新的单元格步进器就会充当消失的单元格步进器。

最后,3天后,我解决了我的问题

只需在将UIStepper对象的操作触发到相应的控制器对象之前设置UIStepper的值,如下所示

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

static NSString *simpleTableIdentifier = @"Cell";

cell = (StepperDetailsCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil){

    cell = (StepperDetailsCell *)[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];

}

[cell.imagegroceries setImage:[UIImage imageNamed:[[self.didSelectedImages sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]objectAtIndex:indexPath.row]]];
//我只是将前一个值(这个值,取自名为“quantityArr”的数组)设置为相应的stepper,然后从stepper对象向controller对象启动操作。就是这样

[cell.objstepper setValue:[[self.quantityArr objectAtIndex:indexPath.row] doubleValue]];

[cell.objstepper addTarget:self action:@selector(stepperValuechanges:) forControlEvents:UIControlEventValueChanged];

cell.lblsteppervalue.text = [self.quantityArr objectAtIndex:indexPath.row];


return cell;

}三天后,我终于解决了我的问题

只需在将UIStepper对象的操作触发到相应的控制器对象之前设置UIStepper的值,如下所示

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

static NSString *simpleTableIdentifier = @"Cell";

cell = (StepperDetailsCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier];

if (cell == nil){

    cell = (StepperDetailsCell *)[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:simpleTableIdentifier];

}

[cell.imagegroceries setImage:[UIImage imageNamed:[[self.didSelectedImages sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]objectAtIndex:indexPath.row]]];
//我只是将前一个值(这个值,取自名为“quantityArr”的数组)设置为相应的stepper,然后从stepper对象向controller对象启动操作。就是这样

[cell.objstepper setValue:[[self.quantityArr objectAtIndex:indexPath.row] doubleValue]];

[cell.objstepper addTarget:self action:@selector(stepperValuechanges:) forControlEvents:UIControlEventValueChanged];

cell.lblsteppervalue.text = [self.quantityArr objectAtIndex:indexPath.row];


return cell;

}

您的问题中没有代码。@Nitin Gohel,现在我添加了我的代码。您的问题中没有代码。@Nitin Gohel,现在我添加了我的代码