2017-02-03 4 views
1

ich oben und unten Einschränkung für uitableviewrowaction TasteIndividuelle UITableViewRowAction Taste

Hier setzen wollen ist mein Code

- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath { 
     UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"Delete" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){ 

     }]; 
     deleteAction.backgroundColor = [UIColor redColor]; 

     return @[deleteAction]; 
    } 

Mag ich hinzugefügt Taste löschen haben. In tableviewCell habe ich eine UIView hinzugefügt es hat obere und untere Einschränkungen. Ich möchte, dass die Schaltfläche zum Löschen mit meiner Ansicht in UITableviewCell übereinstimmt.

enter image description here

Antwort

1

Sie einstellen können Taste Rahmen in Ihrer benutzerdefinierten UITableViewCell Klasse löschen

wie diese

-(void)didTransitionToState:(UITableViewCellStateMask)state 
{ 
    [super didTransitionToState:state]; 
    if ((state & UITableViewCellStateShowingDeleteConfirmationMask) == UITableViewCellStateShowingDeleteConfirmationMask) 
    { 

     UIView *deleteButton = [self deleteButtonSubview:self]; 
     if (deleteButton) 
     { 
      CGRect frame = deleteButton.frame; 
      frame.origin.y = 4; 
      frame.size.height = frame.size.height-8; 
      /* 
      if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
      { 

       frame.size.height = 62; //vikram singh 2/1/2015 
       frame.size.width = 80; 

      } 
      else 
      { 
       frame.size.height = 52; //vikram singh 2/1/2015 
       frame.size.width = 80; 

      } 
      */ 
      deleteButton.frame = frame; 

     } 
    } 
} 

- (UIView *)deleteButtonSubview:(UIView *)view 
{ 
    if ([NSStringFromClass([view class]) rangeOfString:@"Delete"].location != NSNotFound) { 
     return view; 
    } 
    for (UIView *subview in view.subviews) { 
     UIView *deleteButton = [self deleteButtonSubview:subview]; 
     [deleteButton setBackgroundColor:[UIColor whiteColor]]; 
     if (deleteButton) { 

      return deleteButton; 
     } 
    } 
    return nil; 
} 

Verwendung didTransitionToState Methoden :)

+0

Ehrfürchtig ... Vielen Dank –

0

Ein bisschen mehr über Balkaran antwort ... Die Schaltfläche zum Löschen ist eine benutzerdefinierte private Klasse, aber mit der Methode String(describing:) können Sie ziemlich sicher sein, dass Sie sie erhalten können.
Auch ich war überrascht zu finden, dass didTransition feuert, sobald Sie beginnen, den Zustand zu ändern, nicht, wenn der Zustand geändert wird.

Eine aktualisierte Version des Codes des @ balkaran in Swift 3:

override func didTransition(to state: UITableViewCellStateMask) { 
    super.willTransition(to: state) 
    if state == .showingDeleteConfirmationMask { 
     let deleteButton: UIView? = subviews.first(where: { (aView) -> Bool in 
      return String(describing: aView).contains("Delete") 

     }) 
     if deleteButton != nil { 
      deleteButton?.frame.size.height = 50.0 
     } 
0
super.willTransitionToState(state) 
    if state == .ShowingDeleteConfirmationMask 
    { 
     let deleteButton: UIView? = subviews[0] 

     if deleteButton != nil { 
      var frame: CGRect? = deleteButton?.frame 
      frame?.origin.y = 9 
      frame?.origin.x = 10 
      frame?.size.height = (frame?.size.height)! - 14 
      deleteButton?.frame = frame! 
     } 
    } 
Verwandte Themen