Istnieje również metoda -setEditing:animated:
dla UITableViewCell.Więc jeśli przesłonisz go w niestandardowym UITableViewCell i wyślesz wiadomość do super tylko jeśli jest możliwa do edycji, możesz osiągnąć to, co chcesz.
Aby było bardziej zrozumiałe. Podklasy UITableViewCell i utrzymać bool w nim, mówią:
@interface CustomTableViewCell : UITableViewCell
{
BOOL cellEditable;
}
@property (readwrite, assign) BOOL cellEditable;
@end
Następnie w Tableview metody delegata zwrócić przedmiot CustomTabeViewCell z własnością cellEditable odpowiednio ustawić dla wiersza (czy rząd jest edytowalny, czy nie).
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomTableViewCell *newCell = [[CustomTableViewCell alloc] init];
if (row_is_editable)
[newCell setCellEditable:YES];
else
[newCell setCellEditable:NO];
return [newCell autorelease];
}
Według dokumentacji - (void)setEditing:(BOOL)editing animated:(BOOL)animated
metody UITableViewCell za -
„Po wywołaniu tej metody z wartością edycji jest ustawiona na TAK, a obiekt UITableViewCell jest skonfigurowany tak, aby mieć kontrole, komórka pokazuje wstawianie (zielony plus) lub kontrola usuwania (czerwony minus) po lewej stronie każdej komórki i zmiana kolejności po prawej stronie Ta metoda jest wywoływana w każdej widocznej komórce, gdy wywoływana jest metoda setEditing: animated: metoda UITableView. z ustawieniem edycji na NIE usuwa elementy sterujące z komórki. "
Więc wszystko co musisz zrobić, to zastąpić -setEditing: animowany: metoda w naszym CustomTableViewCell i wykonać to:
-(void)setEditing:(BOOL)editing animated:(BOOL)animated
{
if ([self cellEditable])
{
[super setEditing:editing
animated:animated];
}
else
{
[super setEditing:NO
animated:NO];
}
}
i gotowe, teraz kiedy wyzwolić -setEditing:animated:
na widoku tabeli, tylko wiersze, których komórki ustawiłeś jako cellEditable, będą edytowalne.
@Jordan, dziękuję, to jest ten sam pomysł, który miałem, ale tworzy irytujące migotanie, gdy stół przechodzi w tryb edycji i nie wydaje się bardzo naturalny. Uważam, że PO powinien wdrożyć przesunięcie do usunięcia, tak jak sugeruje Ian Henry lub trzymać się bardziej standardowego podejścia. – DyingCactus
Można również użyć animacji, ale zgadzam się. – Jordan
Dzięki Jordan, wydaje się pracować. :) – msk