TableView > Slide Menü und Zeilen löschen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • TableView > Slide Menü und Zeilen löschen

    Abend,
    ich stoße gerade gedanklich an meine Grenzen.

    Bei einem UITableViewController will ich eine Funktion einbauen mit derer ich die Zeile (Cell) löschen kann.
    Jedoch sollte mein Slidemenü noch mit der Wischfunktion funktionieren.

    So nun das Problem > Das Slidemenü geht perfekt auf. Auch die Funktion UIRefreshControl funktioniert wunderbar. Nur ich muss ca. 5-20x hintereinander schnell von rechts nach links wischen um den "löschen" Button zu bekommen.

    Kommentiere ich diese Zeile aus, geht zwar das Slidemenü nicht mehr zu wischen, jedoch funktioniert das mit der Zeile löschen...

    Quellcode

    1. ​//[self.navigationController.view addGestureRecognizer:[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognized:)]];


    Besten Dank für eure Hilfe,
    lg Christopher


    Anbei noch die Codezeilen

    Quellcode

    1. ​// EventViewController.h
    2. #import <UIKit/UIKit.h>
    3. #import "REFrostedViewController.h"
    4. @interface EventViewController : UITableViewController <UITableViewDelegate, UITableViewDataSource>
    5. @property (strong, nonatomic) IBOutlet UITableView *EinsatzTable;
    6. - (IBAction)showMenu;
    7. @end



    Quellcode

    1. ​// EventViewController.m
    2. #import "EventViewController.h"
    3. #import "EventDetailViewController.h"
    4. @interface EventViewController ()
    5. @end
    6. @implementation EventViewController{
    7. NSMutableArray *recipes;
    8. }
    9. - (void)viewDidLoad {
    10. [super viewDidLoad];
    11. recipes = [NSMutableArray arrayWithObjects:@"Einsatz 1", @"Einsatz 2",@"Einsatz 3", @"Einsatz 4", nil];
    12. UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
    13. refreshControl.tintColor = [UIColor blackColor];
    14. refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"zum aktualisieren ziehen"];
    15. [refreshControl addTarget:nil action:@selector(RefreshEinsatzDb) forControlEvents:UIControlEventValueChanged];
    16. self.refreshControl = refreshControl;
    17. [self.navigationController.view addGestureRecognizer:[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognized:)]];
    18. }
    19. //Tabelle
    20. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    21. {
    22. return [recipes count];
    23. }
    24. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    25. {
    26. static NSString *CellIdentifier = @"EventCell";
    27. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    28. cell.textLabel.text = [recipes objectAtIndex:indexPath.row];
    29. return cell;
    30. }
    31. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    32. EventDetailViewController * infoController = [self.storyboard instantiateViewControllerWithIdentifier:@"EventDetailViewController"];
    33. EventDetailViewController *detailViewController = (EventDetailViewController *) infoController;
    34. detailViewController.TempTitle = [recipes objectAtIndex:indexPath.row];
    35. [self.navigationController pushViewController:infoController animated:YES];
    36. }
    37. - (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {
    38. return @"Einsatz löschen";
    39. }
    40. - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    41. [recipes removeObjectAtIndex: indexPath.row];
    42. [self.EinsatzTable reloadData];
    43. }
    44. //Reload
    45. - (void)RefreshEinsatzDb{
    46. [self.EinsatzTable reloadData];
    47. [self.refreshControl endRefreshing];
    48. }
    49. //Slidemenü
    50. - (void)panGestureRecognized:(UIPanGestureRecognizer *)sender
    51. {
    52. [self.view endEditing:YES];
    53. [self.frostedViewController.view endEditing:YES];
    54. [self.frostedViewController panGestureRecognized:sender];
    55. }
    56. - (IBAction)showMenu
    57. {
    58. [self.view endEditing:YES];
    59. [self.frostedViewController.view endEditing:YES];
    60. [self.frostedViewController presentMenuViewController];
    61. }
    Alles anzeigen
  • Hab es selbst hinbekommen. Sollte vl. jemand auch das Problem haben, hier die Lösung...

    Quellcode

    1. @interface EventViewController () <UIGestureRecognizerDelegate>
    2. @property (nonatomic, strong) UIPanGestureRecognizer *sideMenuRecognizer;
    3. @end
    4. @implementation EventViewController{
    5. NSMutableArray *recipes;
    6. }
    7. - (void)viewDidLoad {
    8. [super viewDidLoad];
    9. recipes = [NSMutableArray arrayWithObjects:@"Einsatz 1", @"Einsatz 2",@"Einsatz 3", @"Einsatz 4", nil];
    10. UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
    11. refreshControl.tintColor = [UIColor blackColor];
    12. refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"zum aktualisieren ziehen"];
    13. [refreshControl addTarget:nil action:@selector(RefreshEinsatzDb) forControlEvents:UIControlEventValueChanged];
    14. self.refreshControl = refreshControl;
    15. self.sideMenuRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panGestureRecognized:)];
    16. self.sideMenuRecognizer.cancelsTouchesInView = NO;
    17. self.sideMenuRecognizer.delegate = self;
    18. [self.navigationController.view addGestureRecognizer:self.sideMenuRecognizer];
    19. }
    20. - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    21. if (otherGestureRecognizer == self.sideMenuRecognizer || gestureRecognizer == self.sideMenuRecognizer) {
    22. return YES;
    23. }
    24. return NO;
    25. }
    Alles anzeigen