2013-03-26 14 views
6
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    return YES; 
} 

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{ 
    return UITableViewCellEditingStyleDelete; 
} 


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

    if(editingStyle == UITableViewCellEditingStyleDelete){ 
     //[theSimpsons removeObjectAtIndex:indexPath.row]; 

     NSString *time = [[arrayList objectAtIndex:indexPath.row] objectForKey:@"TIME"]; 
     NSString *date= [[arrayList objectAtIndex:indexPath.row] objectForKey:@"DATE"]; 
     DBManager *dbm = [[DBManager alloc] init]; 
     [dbm initiallzeDatabase]; 
     [dbm deleteItemAtIndexPath:time :date]; 

     //arrayList = [dbm getParkResults]; 
     //[parkTableView reloadData]; 

     [arrayList removeObjectAtIndex:indexPath.row]; 

     [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
    } 
} 

Użyłem powyższego kodu w mojej aplikacji. Część do edycji działa dobrze, ale chodzi o to, że przycisk usuwania pojawia się tylko wtedy, gdy przesuniemy palcem od lewej do prawej komórki. Teraz mam menu, które otwiera się od lewej do prawej strony, jak Facebook. Jak mogę się upewnić, że przycisk usuwania pojawia się, gdy użytkownik przesuwa palcem od prawej do lewej strony.Chcesz zaprezentować przycisk usuwania po prawej do lewej machnięcia w UITableView

Odpowiedz

2

to może działać. Umieść ten kod w awakeFromNib lub init:

UISwipeGestureRecognizer *swipeDelete = [[UISwipeGestureRecognizer alloc]  initWithTarget:self action:@selector(handleSwipeDelete:)]; 
[swipeDelete setDirection: UISwipeGestureRecognizerDirectionLeft]; 
[yourTableView addGestureRecognizer:swipeDelete]; 

następnie w handleSwipeDelete zorganizować komórkę i pokazać przycisk Usuń. Prawdopodobnie będziesz musiał obsłużyć stan komórki i zmienić ją na swipeLeft/swipeRight.

+0

Daję to spróbować. Kiedy mówisz "pokaż przycisk usuwania", czy możemy domyślnie wyświetlić domyślny przycisk kasowania? Jeśli tak, to w jaki sposób? Dzięki :) – ScarletWitch

+1

Możesz spróbować ustawić typ komórki tabeli na "UITableViewCellEditingStyleDelete" po przesunięciu w lewo. Lub utwórz podklasę 'UITableViewCell' i narysuj tę komórkę zamiast domyślnej dla tego wiersza. – Gossamer

+0

Tak. To sprawia, że ​​praca jest właściwa. Dzięki, Gossamer. :) – ScarletWitch

0

wygląda trzeba dostosować zachowanie UITableViewCell, nigdy nie zauważyłem, że Apple dostarczyła zachowanie po przesuwając prawej do lewej ....

6

Proszę nie ustawić delegata do UISwipeGestureRecognizer

napisać to w viewDidLoad lub gdzie zainicjowały swoją UITableView

UISwipeGestureRecognizer *swipeRight = [[UISwipeGestureRecognizer alloc]initWithTarget:self action:@selector(callYourMethod:)]; 
swipeRight.direction = UISwipeGestureRecognizerDirectionRight; 
[self.tblView addGestureRecognizer:swipeRight]; 

Nie ma potrzeby, aby napisać coś w poniższej metody.

- (void)callYourMethod:(UISwipeGestureRecognizer *)recognizer 
{ 

} 
+0

Dzięki Manohar. Dostałem odpowiedź, łącząc twój pomysł z @ Gossamer. Dzięki Wam obojgu. Wy ludzie zaoszczędziliście mi dużo pracy. :) – ScarletWitch

1

Można dostał go za pomocą two Methods of UITableVie.

// This only needs to be implemented if you are going to be returning NO 
// for some items. By default, all items are editable. 
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { 
    // Return YES if you want the specified item to be editable. 
    return YES; 
} 

// Override to support editing the table view. 
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
     //add code here for when you hit delete 
    //When you remove a cell of your tableview, you also has to remove your array object at index x 
    }  
} 

Po usunięciu obiektu. Musisz przeładować UITableView.

[self.tableView reloadData]; 

Aby uzyskać więcej informacji Read This OfficialDocumentaion.

+0

Tak, dziękuję @iPatel. Ale tak jak powiedziałem. gestu nie można było przeczytać, przesuwając się po menu w tym samym wydarzeniu. To nie działa. Ale i tak dziękuję. :) – ScarletWitch

Powiązane problemy