2011-03-13 25 views
6

tôi đã thêm một nút trên UINavigationBar Tôi muốn sử dụng nó để xóa tất cả các hàng của uitablviewlàm thế nào để xóa tất cả các hàng của UITableView

Làm thế nào tôi có thể làm điều đó?

+3

Vui lòng làm rõ ý của bạn bằng cách "xóa tất cả các hàng". – hennes

+0

Điều đó có nghĩa là xóa tất cả nội dung khỏi chế độ xem bảng –

Trả lời

1

Bạn có ý nghĩa gì chính xác bằng cách xóa hàng? Bạn vẫn muốn họ ở đó, nhưng không có văn bản? Nếu có, đây là mã này:

UITableViewCell *cell; 

    NSIndexPath *index; 

     for (int i = 0 ; i < count; i++) { 
      index = [NSIndexPath indexPathForRow:i inSection:0]; 
      cell = [tableView cellForRowAtIndexPath:index]; 
      cell.textLabel.text = @""; 
     } 

Nếu bạn muốn xóa chúng, bạn có thể sử dụng mã này:

[uiTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:index] withRowAnimation:UITableViewRowAnimationFade]; 
+0

Tôi đã sử dụng mã thứ hai nhưng SIGABART luôn, tôi sẽ làm gì – Ali

+0

Bạn có thể thêm mã mẫu của những gì bạn đã làm chính xác không? – Basel

+0

cho vòng lặp Tôi tăng và sử dụng: index = [NSIndexPath indexPathForRow: i inSection: 0] ;; [uiTable deleteRowsAtIndexPaths: [NSArray arrayWithObject: index] withRowAnimation: UITableViewRowAnimationFade]; nhưng sau khi lặp lại seccont nó sụp đổ – Ali

2

Nên có một phương pháp UITableView đại biểu thao tác trên kiểm soát UITableView:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

Tìm phương pháp này và thay đổi nơi dữ liệu cho mỗi ô đang được kéo. Nếu bạn hiện đang sử dụng indexPath để truy cập một mảng các giá trị để điền các ô tableView của bạn, bạn có thể chuyển đổi theo chương trình thành một mảng các giá trị rỗng hoặc thậm chí chỉ trả về các ô trống từ phương thức này khi điều kiện là đúng.

+0

Và anh ấy cũng cần gọi lại reloadData trên chế độ xem bảng. – hennes

+0

bắt tốt! :-) –

0

Vụ tai nạn xảy ra vì bạn cần phải thiết lập lại số nếu hàng đếm trong -

-(NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section 
{ 
    return [tempArray count]; 
} 

một cách là sử dụng một biến cờ như sau:

-(NSInteger)tableView:(UITableView *)tableView 
numberOfRowsInSection:(NSInteger)section 
{ 
    if (deleting) 
     return rowcount; 
    else 
     return [tempArray count]; 
} 

Ngoài ra, bạn cần phải sửa đổi xóa mã như sau:

deleting = YES; 
    for (i = [uiTable numberOfRowsInSection:0] - 1; i >=0 ; i--) 
    { 
    NSIndexPath *index = [NSIndexPath indexPathForRow:i inSection:0]; 
    [uiTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:index] withRowAnimation:UITableViewRowAnimationFade]; 

    rowcount = i; 
    } 

    deleting = NO; 
    [uiTable reloadData]; 

trong tệp .h

của bạn
BOOL deleting; 
NSInteger rowcount; 

Hope this helps ...

2

đơn giản .. thiết lập nguồn dữ liệu của bạn (NSArray hoặc NSDictionary) tới bằng không và [self.tableView reloadData]!

+0

sẽ không phải là chỉ cần loại bỏ mảng và nơi mà các đối tượng vẫn sẽ tồn tại? nếu có, thì nó không phải là một giải pháp tốt vì nó tạo ra rò rỉ bộ nhớ ... Thay vào đó bạn nên thử NSMutableArray * arrayThatYouCanRemoveObjects = [NSMutableArray arrayWithArray: your_array]; [arrayThatYouCanRemoveObjects removeObjectAtIndex: your_object_index]; [phát hành your_array]; your_array = [[NSArray arrayWithArray: arrayThatYouCanRemoveObjects] giữ lại]; được sao chép từ http://stackoverflow.com/questions/1728475/nsarray-remove-item-from-array – yunas

12

Một chút muộn ... nhưng cố gắng này:

Trong trường hợp bạn muốn xóa bảng:

// clear table 
clearTable = YES; 
[table reloadData]; 
clearTable = NO; 

Chức năng này sẽ giống như thế:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 

    if(clearTable) 
     return 0; 

    (...) 
} 
1

Trước khi bạn đang tải lại bảng loại bỏ tất cả các đối tượng khỏi mảng tableView của bạn (mảng đã điền bảng tableView của bạn) như sau:

[myArray removeAllObjects]; 
[tableView reloadData]; 
0

rowcount = i nên đi trước cuộc gọi.

[uiTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:index] 
withRowAnimation:UITableViewRowAnimationFade]; 

Nếu không, nó sẽ bị lỗi.

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