2016-07-21 11 views
0

erstellt 4x4 Metriken Schaltfläche in UITableView. Ich möchte die Schaltfläche in der Reihenfolge auswählen.klicken Sie auf Schaltfläche Aktion in sequenzieller Reihenfolge in UITableView

// Taste Creation in Zelle für Zeile Index

for (int i = 0; i< [buttonArray count]; i++) 
{ 
    int buttonSpace = 10 * i + 10; 
    NSLog(@"ButtonPosition:%d",buttonSpace + (i * 50)); 
    cell.Button = [[CustomButton alloc] initWithFrame:CGRectMake(buttonSpace + (i * 50),35, 50, 50)]; 
    cell.Button.layer.cornerRadius = 25; 
    [cell.Button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 
    cell.Button.buttonIndex = i; 

    [cell.ScrollView addSubview:cell.Button]; 
    cell.ScrollView.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.3]; 
} 
    rowIndexValue = indexPath.row; 

// Button-Aktion im View-Controller.

-(void)buttonAction:(CustomButton *)sender 
{ 
    if (rowIndexValue) { 

     int counter = (int)[sender buttonIndex]; 
      if (counter == incrementValue) 
      { 
       sender.backgroundColor = [UIColor redColor]; 
       counter += 1; 
       incrementValue = counter; 
      } 
      else{ 
       sender.selected = NO; 
      } 
     } 
} 

Die Reihenfolge der Schaltflächenaktionen in sequentieller Reihenfolge für beliebige Zeilen. Benutzer wählen 3. Reihe, aber Auswahlreihe in der dritten Reihe beginnen vom 1. Knopf dann 2. Knopf dann 3. Knopf schließlich 4. Knopf.

4x4 -> 4 Zeilen für UITableview 4 Tasten in jeder Zeile. Sobald die Schaltfläche geklickt ist, befindet sie sich im Sperrmodus.

+0

Was ist das Problem genau? – Lion

+0

@Lion Ich möchte die Schaltfläche in sequentiell in einer beliebigen Zeile UITableView auswählen. 4x4 4-reihig fürUITableview 4-Taste in jeder Reihe. Sobald die Schaltfläche geklickt ist, befindet sie sich im Deaktivierungsmodus. – kiran

+0

'der Knopf ist sequentiell in irgendeiner gelegentlichen UITableView Reihe' was meinst du mit dieser Linie? – Lion

Antwort

0

Stellen Sie den richtigen Wert ein, so dass Sie die Tastenspalte sowie die Zeilenposition erkennen können. buttonIndex speichert nur den Wert i, so dass Sie nur die Spaltenposition erhalten. Sie können button.tag = indexPath.row setzen und in der buttonAction-Methode verwenden, um die Zeilenposition zu kennen.

0

Deklarieren Sie NSInteger tagValue global in Ihrem ViewController.

-(NSUInteger)getRowByBtn:(UIButton *)btn :(UITableView *)tblView 
{ 
    CGPoint center= btn.center; 
    CGPoint rootViewPoint = [btn.superview convertPoint:center toView:tblView]; 
    NSIndexPath *indexPath = [tblView indexPathForRowAtPoint:rootViewPoint]; 
    NSLog(@"indexPath = %ld", (long)indexPath.row); 
    return indexPath.row; 
} 

Mit Hilfe der obigen Methode können Sie indexpath.row Wert erhalten, von dem Sie auf die Schaltfläche für jede Zeile in der Tableview bestimmen können.

[cell.Button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside]; 

-(void)buttonAction:(UIButton*)sender 
{  
    UIButton *btn=(UIButton *)sender; 
    tagValue = [self getRowByBtn:btn :yourTableview]; 
    [[self.view viewWithTag:tagValue]setUserInteractionEnabled:YES]; 
    //or any other action 
} 
0

Set UIButton Tag in CellForRowAtIndexPath So:

[cell.btn_name addTarget:self action:@selector(onclick_button:) forControlEvents:UIControlEventTouchUpInside]; 
self.btn_name.tag=indexpath.row; 

Und

-(IBAction)onclick_button:(id)sender 
{ 
    int btn_index= ((UIView*)sender).tag; 
    NSLog(@"Btn index:%d",btn_index); 
} 
0

sie das Problem mit folgendem Code beheben.

-(void)buttonAction:(UIButton*)sender{ 
    CGPoint center = sender.center; 
     CGPoint rootViewPoint = [sender.superview convertPoint:centre toView:self.tableView]; 
     NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:rootViewPoint]; 
     sender.userInteractionEnabled = NO; 
     sender.backgroundColor = [UIColor redColor]; 
     CustomButton *enableNextButton = (CustomButton *) [[self.goalsTableView cellForRowAtIndexPath:indexPath] viewWithTag:sender.tag+1]; 
     enableNextButton.userInteractionEnabled = YES; 
    }