Ứng dụng được đề cập có khả năng cho người dùng đánh dấu các mục là yêu thích. Khi người dùng không có mục yêu thích được lưu, tôi muốn thông báo cho họ về thực tế (chủ yếu là tôi ghét ý tưởng của một tableView trống).Hiển thị nhãn tùy chỉnh khi không có sẵn dữ liệu cho tableView
My numberOfRowsInSection
là 0 khi không có mục nào mà người dùng đã đánh dấu là yêu thích. Tôi muốn đặt cell.textLabel.text = @ "Bạn không có mục yêu thích" nhưng khi không có mục nào cho bảng cellForRowAtIndexPath
không được gọi.
Tôi có thể kiểm tra numberOfRowsInSection
để đưa ra kết quả khi nó gặp 0 và sau đó kiểm tra 1 hàng trong cellForRowAtIndexPath
rồi chèn văn bản tùy chỉnh nhưng sau đó nếu chúng chỉ có một yêu thích?
CẬP NHẬT
tôi đã cố gắng thực hiện các ý tưởng tôi đã nói trên, và khuyến cáo dưới đây, nhưng có lẽ tôi sẽ không làm điều đó đúng, có lẽ là do thực tế rằng đó là một fetchedResultsController với các phương pháp đại biểu để cập nhật bảng khi một sự thay đổi xảy ra.
tôi nhận được lỗi này khi tôi xóa các tế bào khi có nhưng một tế bào trong bảng:
*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-1447.6.4/UITableView.m:976 Serious application error. An exception was caught from the delegate of NSFetchedResultsController during a call to -controllerDidChangeContent:. Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (1) must be equal to the number of rows contained in that section before the update (1), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted). with userInfo (null)
và khi có được không các tế bào sẽ được hiển thị ở nơi đầu tiên nó bị treo với:
*** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[_PFBatchFaultingArray objectAtIndex:]: index (0) beyond bounds (0)'
đây là mã có liên quan:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
id <NSFetchedResultsSectionInfo> sectionInfo = [[_fetchedResultsController sections] objectAtIndex:section];
if ([sectionInfo numberOfObjects]==0) {
return 1;
} else {
return [sectionInfo numberOfObjects];
}
}
- (void)configureCell:(UITableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {
if ([[_fetchedResultsController sections] objectAtIndex:0]==0) {
cell.textLabel.text = @"You have no favorites";
} else {
Shows *show = [_fetchedResultsController objectAtIndexPath:indexPath];
cell.textLabel.text = show.ShowsToSerials.serialName;
cell.detailTextLabel.text = [NSString stringWithFormat:@"%@", show.showTitle];
}
}
Bạn có vui lòng gửi mã cho giải pháp của bạn 1 không? –
Daniel. Cảm ơn bạn một lần nữa cho mã của bạn. Chỉ là một câu hỏi về quản lý bộ nhớ. Tôi phát hành quan điểm trong dealloc (là tốt nhất?) Nhưng tôi nên phát hành nhãn ở đâu? –
Tôi có chế độ xem và tất cả được phát hành trong dealloc. Tôi không tin bất cứ điều gì đang rò rỉ cho tôi. –