2010-12-14 16 views
7

Czy istnieje metoda powiadamiania lub delegowania, za pomocą której można wykryć, kiedy widok tabeli przechodzi w stan edycji?UITableView Edycja/Gotowe zdarzenia

Co chcę zrobić, to wykryć, że tabela edytuje, a następnie wyświetlić dodatkowy wiersz, który mówi "Dodaj nowy element" lub coś w tym stylu.

Próbowałem dodać wiersz "Dodaj nowy element" na końcu tablicy po załadowaniu kontrolera widoku, a następnie w zależności od tego, czy [tableView isEditing] ma wartość true, albo zwraca [liczba tablic] (dla edytuję) lub [liczba tablic] - 1 (gdy nie edytuję).

Wszelkie pomysły? W jaki sposób Apple edytuje elementy w tabeli i umożliwia ich usunięcie?

Odpowiedz

6

Znalazłem. Przesłonić tę metodę:

- (void)setEditing:(BOOL)editing animated:(BOOL)animated{ 
    [super setEditing:editing animated:animated]; 

    // do something 
} 
3

Co można zrobić, to dodać IBAction jako selektor do swojej editButton. Po puknięciu editButton zostanie wywołana metoda. Przykład:

-(void)viewDidLoad 
{ 
// ... 
[self.editButtonItem setAction:@selector(editAction:)]; 
[self.navigationItem setRightBarButtonItem: self.editButtonItem]; 

// .. your code 

} 

-(IBAction)editAction:(id)sender 
{ 
    UIBarButtonItem * button = ((UIBarButtonItem*)sender); 

    if (!self.tableView.editing) 
    { 
     [self.tableView setEditing:YES animated:YES]; 
     [button setTitle:@"Done"]; 
     // do your stuff... 
    } 
    else 
    { 
     [button setTitle:@"Edit"]; 
     [self.tableView setEditing:NO animated:YES]; 
     // do your stuff... 
    } 
} 

Jeśli masz swój własny UIButton i nie używać standardowych self.editButtonItem następnie użyć [yourButton addTarget: działanie samodzielne: @selector (editAction :) forControlEvents: UIControlEventTouchUpInside]; I obsłużyć go jako UIButton * w editAction: metoda