2009-07-22 42 views
5

Tôi có UITableView và tôi muốn cung cấp chức năng cho người dùng xóa hàng khi anh trượt hoặc vuốt ngón tay lên hàng. Tôi biết phong cách chỉnh sửa cung cấp một nút tròn màu đỏ với dấu hiệu -ve trên đó. Nhưng Làm thế nào để thực hiện phong cách flicking. Tôi thấy nhiều ứng dụng sử dụng nó, do đó, táo cung cấp bất kỳ đại biểu sẵn có cho nó hoặc chúng ta cần phải viết bộ điều khiển riêng của chúng tôi cho nó.Cách xóa một hàng của một Bảng trong iPhone

+0

bạn có thể cho tôi biết phương thức bạn đã biết không? coz tôi muốn thực hiện điều đó. – rptwsthi

Trả lời

32

Để có được swipe ảnh hưởng đến bạn cần phải thực hiện xem bảng đại biểu phương pháp

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

, điều này sẽ cung cấp quyền truy cập vào sự tương tác swipe để xóa. Tôi thường cung cấp tương tác chỉnh sửa cũng như cho các lần xem bảng nơi có thể xóa vì tương tác vuốt có xu hướng bị ẩn một chút so với người dùng.

Như một ví dụ:

- (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]; 
} 

Hy vọng rằng sẽ giúp.

+0

không biết làm thế nào để cảm ơn u mate .... – WaaleedKhan

+1

withRowAnimation: CÓ là sai, bạn nên sử dụng một enum ví dụ: withRowAnimation: UITableViewRowAnimationTop – ozba

+0

Cân nhắc việc thay đổi '... UITableViewRowAnimationTop];' thành '... UITableViewRowAnimationAutomatic];'. Điều này đã được thực hiện trong một chỉnh sửa không hợp lệ (nên đã có một bình luận), vì vậy tôi hoàn nguyên nó. Nếu điều này đúng, hãy xem xét cập nhật giải pháp của bạn cho phù hợp. –

2

Tôi gần như tích cực là có một ứng dụng mẫu thực hiện việc này. Một câu trả lời cụ thể hơn sẽ sớm ra mắt.

CẬP NHẬT: iPhoneCoreDataRecipes cho biết chính xác những gì bạn đang tìm kiếm.

Mở chủ đề, đây là một trong những phương pháp được cung cấp ngọt ngào nhất:

// 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]; 
} 

Tôi nghĩ rằng có một cách dễ dàng hơn để thực hiện những gì bạn muốn, nhưng sau đó một lần nữa đây là khá dễ dàng. Khó khăn duy nhất có thể xóa chính mình ... chỉ cần xem ra cho segfaults.

Các vấn đề liên quan