2016-03-28 21 views
1

Ich habe eine UITableViewController, die aus einem TableView und einem UILabel besteht. UITableViewSource gibt Daten an die TableView über benutzerdefinierte UITableViewCell. UITableViewCell besteht aus einem Stepper, der Elemente hinzufügen kann und das Label enthält diesen Wert.UIStepper über Reiten die UILabel Werte in Custom Cell in iOS

Ich mag die UILabel in UIViewController aktualisieren, wenn der Benutzer auf dem Stepper tippt, und ich kann nicht scheinen, dass zu arbeiten ...

sind

Jede Hilfe/Tipps, sehr zu schätzen! Hier ist Beispielcode von meinem Testprojekt, es gibt eine Menge ungenutzten Code, aber das ist nur ein Test, also lasse ich es da sein.

Danke,

Der Kodex

My Custom Zellklasse "StepperDetailsCell" ist.

@interface StepperDetailsCell : UITableViewCell 
@property (nonatomic,weak) id <StepperDetailsCellDelegate> delegate; 
@property (strong, nonatomic) IBOutlet UIImageView *imagegroceries; 
@property (strong, nonatomic) IBOutlet UIStepper *objstepper; 
@property (strong,nonatomic) IBOutlet UILabel *lblsteppervalue; 


    -(IBAction)stepperclicked:(UIStepper*)sender; 

@end 

und meine Tabellenansicht Klasse wird als "SecondViewController" genannt

-(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]]]; 

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

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


    return cell; 
} 

Pragma Marke - Stepper Aktion Methode

-(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]; 

} 

Hier ist alles einwandfrei funktioniert, aber wenn neue Zelle Laden von der Unterseite des Tableview, dann die neue Zelle Stepper als verschwundene Zelle Stepper.

+0

Es gibt keinen Code in Ihrer Frage ist. –

+0

@Nitin Gohel, Jetzt habe ich meinen Code hinzugefügt –

Antwort

0

Endlich Nach 3 Tagen habe ich mein Problem gelöst.

einfach den Wert für UIStepper setzen, bevor die Wirkung des UIStepper Objekt an den entsprechenden Controller-Objekt wie folgt ..

Brennen - (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]]]; 

// ich habe gerade den vorherigen Wert (dieser Wert ist, ich bin aus dem Array mit dem Namen „quantityArr“) zu entsprechendem Stepper, genommen, bevor die Aktion an das Controller-Objekt aus dem Stepper Objekt zu feuern. Das ist es ..

[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; 

}