2015-03-26 1 views
11

Ich möchte Zelle auf einen Knopf klicken. Ich bin erfolgreich beim Wischen einer Zelle. Aber ich möchte auf den Knopf wischen, der in der Zelle ist. mein CodeWie Zelle wischen beim Klicken auf eine Schaltfläche

- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *simpleTableIdentifier = @"SimpleCell"; 
    SimpleCell *cell = (SimpleCell *)[tableView dequeueReusableCellWithIdentifier:simpleTableIdentifier]; 
    if (cell == nil) 
    { 
     NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"SimpleCell" owner:self options:nil]; 
     cell = [nib objectAtIndex:0]; 
    } 
    SimpleCell *cekks=[[SimpleCell alloc]init]; 
    cekks.scrollButton.alpha =0.0; 

    NSString *titleString; 
    UIButton *sender = [[UIButton alloc]init]; 
    //[sender setBackgroundImage:[UIImage imageNamed:@"swipe.png"] forState:UIControlStateNormal]; 
    sender.tag = indexPath.row; 

    titleString [email protected]"Send A Gift"; 
    UITableViewRowAction *sendAGift = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:titleString handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){ 
     // [self deleteMail:[NSArray arrayWithObject:indexPath]:YES]; 

    }]; 

    [sendAGift setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"swipe.png"]]]; 



    return @[sendAGift]; 
} 
+0

was willst du? Swipe on Button click oder Swipe auf die Schaltfläche, die die Zelle streichen –

+0

Beim Klicken auf eine Schaltfläche auf Zelle Swipe –

+0

Wischen Sie die Zelle, wenn Sie auf die Schaltfläche klicken, richtig? –

Antwort

3

Ich denke, Ihre Klasse SimpleCell die UIButton, durchführen, um die Wiederverwendung korrekt enthalten sollte.

Es wird einfacher, wenn Sie eine benutzerdefinierte UITableViewCell erstellen, die alle UI-Aktionen über die Zelle enthält und sie innerhalb der Zelle, nicht in der UITableView selbst betreiben.

Nehmen wir ein Beispiel sehen:

Hier ist die customCell.h Datei:

@interface customCell : UITableViewCell { 
    UIButton *buttonSwipe; 
} 
@end 

Hier ist die customCell.h Datei:

#import "customCell.h" 

@implementation customCell 

- (instancetype) initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if (self) { 
     [self commonInit]; 
    } 

    return self; 
} 

- (instancetype) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { 
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; 
    if (self) { 
     [self commonInit]; 
    } 

    return self; 
} 

- (instancetype)initWithCoder:(NSCoder *)aDecoder { 
    self = [super initWithCoder:aDecoder]; 
    if (self) { 
     [self commonInit]; 
    } 

    return self; 
} 

- (void) commonInit { 
    buttonSwipe = [UIButton... // Initialize here your button 
    [buttonSwipe addTarget:self action:@selector(swipeCell:) forControlEvents:UIControlEventTouchUpInside]; 
} 

- (void) swipeCell { 
    // Embed here the code that makes the effect of swipe the cell. 
} 

Das mit einigen ein schnell ungetestet Abhilfe ist, vordefinierter Code, aber ich denke, es ist ein funktionierendes Beispiel, wenn Sie Ihre Zellen mit Ihrem eigenen Code wischen wollen.

Aber wenn Sie einen schnelleren Weg wollen, empfehle ich Ihnen Chris Wendel und seine SWTableViewCell auf GitHub

+0

in swipecell Methode, wie wir Delegate-Methode der Tabelle aufrufen ... Nein, ich brauche das nicht –

+0

Mmmh Ich kann nicht den Grund sehen, warum Sie UITableView Delegate Methoden aus einer Zelle aufrufen möchten ... Können Sie es bitte erklären? –

+0

in iOS 8 beim Durchstreichen einer Zelle gibt es Methode - (BOOL) tableView: (UITableView *) tableView canEditRowAtIndexPath: (NSIndexPath *) indexPath - (void) tableView: (UITableView *) tableView commitEditingStyle: (UITableViewCellEditingStyle) editingStyle forRowAtIndexPath: (NSIndexPath *) indexPath –

1

Sie können besuchen editActionsForRowAtIndexPath aufrufen: Methode als

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:SELECTED_ROW_INDEX inSection:0]; 
    [self tableView:self.tableView editActionsForRowAtIndexPath:indexPath]; 

den Code unten versuchen

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"Cell" forIndexPath:indexPath]; 


    //swipe button allocation 
      UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 30, 30)]; 
      btn.tag = indexPath.row; 
      [cell.contentView addSubview:btn]; 
      [btn addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchUpInside]; 
      cell.textLabel.text = [NSString stringWithFormat:@"%lu",indexPath.row]; 
      return cell; 
     } 
     -(void)buttonTouched:(id)sender{ 

      UIButton *btn = (UIButton *)sender; 
      NSIndexPath *indexPath = [NSIndexPath indexPathForRow:btn.tag inSection:0]; 
      [self tableView:self.tableView editActionsForRowAtIndexPath:indexPath]; 
     } 
     - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
      // Return NO if you do not want the specified item to be editable. 
      return YES; 
     } 

     - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
      if (editingStyle == UITableViewCellEditingStyleDelete) { 
       [self.objects removeObjectAtIndex:indexPath.row]; 
       [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
      } else if (editingStyle == UITableViewCellEditingStyleInsert) { 
       // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view. 
      } 
     } 

     -(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath{ 
      NSLog(@"edit"); 
      // code 
      return nil; 
     } 
+0

editActionsForRowAtIndexPath Anrufe aber nicht angezeigt die Optionsfelder –

+0

ich denke, etwas fehlt –