2016-07-14 4 views
1

Da didSelectRowAtIndexPath auf UITableViewCell Auswahl gefeuert wird, muss es ein controlEvent wie UIControlEventTouchUpInside (als Beispiel) haben. Welches controlEvent wird beim Aufruf von didSelectRowAtIndexPath ausgelöst?
Der Grund, warum ich das frage, ist, meine UITableViewCell hat Swipe-Tasten, deren Ereignisse mit didSelectRowAtIndexPath in Konflikt geraten. Aber wenn ich die Standard-Mail-App iPhone sehe, funktioniert es ziemlich reibungslos.Was ist das controlEvent von didSelectRowAtIndexPath

+0

muss durch die Gestenerkenner der Zelle (oder deren contentViews) schauen, um zu sehen, was alle Gesten behandelt werden. Sobald Sie die Tippgeste gefunden haben, können Sie damit steuern, welche Geste wann ausgelöst wird. Es gibt auch eine iOS-Möglichkeit, die Zellwischfunktion hinzuzufügen, die wirklich gut funktioniert. Hast du das probiert? – keithbhunter

+1

didSelectRowAtIndexPath - es ist die delegate-Methode von tableview durch detailt, wenn Sie die Zelle irgendwo berühren, wo die Delegate-Methode ausgelöst wird. 'controlEvent' - Innerhalb der Zelle haben Sie einen beliebigen Typ des UIElement (zB UIButton, UIsegment, UISlider). Wenn wir das bestimmte Element (nicht in der gesamten Zelle) berühren, wird die Aktion ausgelöst. –

+0

@keithbhunter: Ich fürchte, ich habe nicht. Darf ich das wissen? – Nitish

Antwort

0

Sie müssen benötigen Delegatmethode zu implementieren für den Umgang mit Swipe Veranstaltung reibungslos folgenden sind die einige Beispiel-

- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath { 

    UITableViewRowAction *moreAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Call" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){ 

     // maybe show an action sheet with more options 

     // NSIndexPath *cellIndexPath = [self.tView indexPathForCell:cell]; 
     // UIActionSheet *shareActionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Contact Info", @"Email Conversation",@"Clear Conversation", nil]; 
     // shareActionSheet.tag=indexPath.row; 
     // [shareActionSheet showInView:self.view]; 


     [self callButtonClicked:conObject.userName]; 

     //[cell hideUtilityButtonsAnimated:YES]; 

     [self.tView setEditing:NO]; 

    }]; 

    moreAction.backgroundColor=[UIColor colorWithRed:77.0/255.0 green:216.0/255.0 blue:101.0/255.0 alpha:1]; 

    // moreAction.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"MobileRingIcon"]]; 

    UITableViewRowAction *deleteAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Delete" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath){ 

     UIActionSheet *sheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Delete"otherButtonTitles: nil]; 

     sheet.tag=indexPath.row; 

     [sheet showInView:self.view]; 

    }]; 

    [deleteAction setBackgroundColor:[UIColor redColor]]; 

    return @[deleteAction, moreAction]; 
} 

// From Master/Detail Xcode template 
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 

    } 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. 
    } 
} 
-1

Verwenden commitEditingStyle dh

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 

dieser Methode

Sie kümmern