12

Tôi có một số NSFetchedResultController với phần khác. Tôi có một vụ tai nạn khi tôi cố gắng tìm kiếm bằng UISearchDisplayController:Sụp đổ khi tìm kiếm trong hai phần

*** Assertion failure in -[UITableViewRowData rectForRow:inSection:], /SourceCache/UIKit/UIKit-2372/UITableViewRowData.m:1630 

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'request for rect at invalid index path (<NSIndexPath 0x1d2c4120> 2 indexes [0, 1])' 

tôi đã kiểm tra và mảng tìm kiếm của tôi thực sự có hai mục (kết quả dự kiến):

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 

lợi nhuận 1

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

trả về 2

Điều thú vị, nếu tôi chỉ có một phần, nó hoạt động hoàn hảo.

Trợ giúp xin vui lòng! :)

Trả lời

38

Không chắc chắn nếu bạn figured it out, tôi sẽ nghĩ rằng bạn đã làm nhưng giả sử bạn đang sử dụng

[self.tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

trong cellForRowAtIndexPath bạn

làm

if (tableView == self.searchDisplayController.searchResultsTableView) { 
    cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 
} else { 
    cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 
} 

cũng chắc chắn rằng bạn đang sử dụng self.tableView

+3

Bạn có thể giải thích lý do cho việc này không? Chỉ cần tự hỏi vì tôi có thể giúp tôi giải quyết một vấn đề khác trong tương lai. – Jeremy1026

+9

Điều này là do bạn đang yêu cầu self.tableView cho một ô. Nhưng indexPath, khi tìm kiếm, là một đường dẫn chỉ mục vào bảng tìm kiếm. Đường dẫn chỉ mục không nhất thiết phải hợp lệ cho self.table, vì vậy đường dẫn chỉ mục này không thể được truyền cho nó. self.table cần được yêu cầu cho ô, vì CellIdentifier chưa được đăng ký với bảng tìm kiếm. –

+0

Và có, nó vẫn là ma thuật ngu ngốc để làm cho mọi thứ hoạt động! :) –

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