2009-03-30 14 views
5

Mọi người tiếp tục viết về xóa một phần. Vâng, tôi dường như không thể thêm một cái.Trợ giúp chèn phần mới vào một TableView

Hiện nay, tôi đang cố gắng như thế này (mà không thành công với NSInternalInconsistencyException):

UITableView *tv = (UITableView *) self.tableView; 

if ([tv numberOfSections] == 1) 
{ 
    [tv beginUpdates]; 
    [tv insertSections:[NSIndexSet indexSetWithIndex:0] withRowAnimation:UITableViewRowAnimationTop]; 

    NSLog(@"Inserted.. Brace for impact."); 
    [tv endUpdates]; 
} 

NSLog(@"Section count after update: %d", [tv numberOfSections]); // Never reached 

Nếu tôi đúng, chèn một phần với chỉ số 0 nên đặt nó ở phía trên, chạm tất cả các phần khác xuống, đúng? Vâng, nếu tôi viết ra numberOfSections ngay sau khi chèn, có vẻ như không có thay đổi về số lượng các phần.

Bất kỳ ý tưởng nào?

Johan

Trả lời

3

Có, cảm ơn cả hai bạn.

Sau khi một số việc tung hứng, cuối cùng tôi đã cố gắng làm cho nó hoạt động. Đó là sự kết hợp cả hai đề xuất của bạn. Dữ liệu mới chưa bao giờ được chèn vào, nhưng tôi cũng không phải tăng số lượng hàng cho mục đầu tiên được chèn vào, mà chỉ là số thứ hai.

2

Bạn cũng đã cập nhật nguồn dữ liệu của mình chưa? Bạn không thể chỉ cập nhật chế độ xem bảng mà không cập nhật dữ liệu cơ bản.

+0

Có .. hm. Vâng, tôi cũng vậy, vẫn là ngoại lệ. Dù sao cũng cảm ơn bạn. – Johan

2

Bạn cần cập nhật thông báo numberOfSectionsInTableView của lớp UITableViewDataSource.

+0

Vâng, tôi thực hiện [mục đếm] để xem có lý do nào để tăng số phần, nếu có bất kỳ mục nào được thêm vào không, nó trả về 2, nếu không 1. Hoặc bạn có nghĩa là cần chủ động nhắn tin numberOfSectionsInTableView? – Johan

+0

No. Tôi không có nghĩa là chủ động nhắn tin numberOfSectionsInTableView. Tôi có nghĩa là những gì bạn dường như đã làm: trả về đúng số phần trên thực hiện thông điệp đó. –