2009-07-22 12 views
5

UITableView'ım var ve kullanıcıya satırda parmağını kaydırdığında veya kaydırdığında işlevi silmek için işlevsellik sağlamak istiyorum. Üzerinde -ve işareti olan dairesel bir kırmızı düğme sağlayan düzenleme stilini biliyorum. Ama flicking tarzı nasıl uygulanır. Bunu kullanarak birçok uygulama gördüm, bu yüzden Apple bunun için herhangi bir dahili temsilci sağlıyor veya bunun için kendi denetleyicimizi yazmamız gerekiyor.iPhone'da Masa Üstü Satışı Nasıl Sililir

+0

Bildiğiniz yöntemi anlatabilir misiniz? Bunu uygulamak istiyorum. – rptwsthi

cevap

32

, bu silinmek üzere tokatlamak etkileşimine erişim sağlayacak tablo görünümü Temsilciye

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

yöntemini uygulamak gerekir etkiler. Swipe etkileşiminin kullanıcılar tarafından gizlenen bir eğilim olduğu için, silme işleminin mümkün olduğu tablo görünümleri için genellikle bir düzenleme etkileşimi sağlar. Örnek olarak

: yardımcı

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    [tableView beginUpdates];  
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
    // Do whatever data deletion you need to do... 
    // Delete the row from the data source 
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationTop]; 
    }  
    [tableView endUpdates]; 
} 

Umut.

+0

nasıl yapıldığını bilmiyorum .... – WaaleedKhan

+1

withRowAnimation: YES yanlış, enum kullanmalısınız ör. withRowAnimation: UITableViewRowAnimationTop – ozba

+0

'... UITableViewRowAnimationTop];' '' UITableViewRowAnimationAutomatic] değiştirmeyi düşünün; Bu geçersiz bir düzenlemede yapıldı (bir yorum olmalıydı), bu yüzden onu geri aldım. Bu doğruysa, çözümünüzü buna göre güncellemeyi düşünün. –

2

Bunu yapan örnek bir uygulama olduğu için neredeyse olumluyum. Daha somut bir cevap yakında gelecek.

GÜNCELLEME: iPhoneCoreDataRecipes muhtemelen tam olarak aradığınız şeyi verir. başlığı altında

, burada tatlı sağlanan yöntemlerden biridir:

// If I want to delete the next 3 cells after the one you click 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSMutableArray* indexPaths = [NSMutableArray array]; 
    for (int i = indexPath.row + 3; i < indexPath.row + 3; i++) 
    { 
    [indexPaths addObject:[NSIndexPath indexPathForRow:i inSection:0]]; 
    } 

    [tableView beginUpdates]; 
    [tableView deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade]; 
    [tableView endUpdates]; 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

Orada ne istediğinizi gerçekleştirmek için daha kolay bir yoldur, ama sonra tekrar bu oldukça kolay olduğunu düşünüyorum. Tek zorluk kendini siliyor olabilir ... sadece segfaults için dikkat edin. tokatlamak almak için

İlgili konular