2011-10-19 24 views
10

Tôi có một số NSMutableArrays mà tôi cần xóa khi làm mới chế độ xem. Tuy nhiên, khi tôi cố gắng xóa chúng với [array removeAllObjects]; sự cố về lần xem bảng của tôi do index beyond bounds error. Tất cả tôi làm với việc làm mới, rõ ràng mảng và gọi chức năng tương tự như trong viewDidLoad để điền vào tableview. [tableView reloadData] không được gọi cho đến khi dòng cuối cùng của phương thức.Xóa NSMutableArray để làm mới

EDIT: Rất có khả năng vấn đề là: Tôi sử dụng kéo để làm mới lib bên ngoài và khi bạn cuộn lên và nhả bảng, nó bị trả lại và do đó UITableView sẽ cố gắng tải ô tiếp theo, nó không thể vì mảng bị xóa và nó vẫn đang được tải.

Trả lời: removeAllObjects khỏi mảng, ngay lập tức làm self.tableView reloadData và sau đó tiếp tục với phần còn lại.

+0

Hiện chúng tôi mã của bạn – Nekto

Trả lời

38

sự cố có thể là do numberOfRowsInSection trả về một số đếm và mảng nguồn dữ liệu của bạn trống.

chỉ cần gọi [array removeAllObjects] và trong numberOfRowsInSectionreturn [array count].

Tôi hy vọng nó sẽ giải quyết được vấn đề của bạn. May mắn nhất!!!

+0

Cảm ơn một người đàn ông rất nhiều :) – Supertecnoboff

+0

là removeAllObjects phát hành bình đẳng mà đối tượng? –

0

Khi bạn làm mới mảng của mình, trước tiên hãy kiểm tra xem nó có đối tượng hay không & rồi khởi động lại mảng của bạn và giải phóng một mảng.

3

tôi xóa các tế bào khỏi tầm nhìn bàn của tôi trong những điều sau manner-

NSMutableArray* indexPathsToDelete = [[NSMutableArray alloc] init]; 
      for(unsigned int i = 0; i < [self.array count]; i++) 
      { 
       [indexPathsToDelete addObject:[NSIndexPath indexPathForRow:i inSection:0]]; 
      } 

[self.tableView beginUpdates]; 
[self.array removeAllObjects]; 
[self.tableView deleteRowsAtIndexPaths:indexPathsToDelete withRowAnimation:UITableViewRowAnimationLeft]; 
[self.tableView endUpdates]; 
[indexPathsToDelete release]; 
Các vấn đề liên quan