12

Mam NSFetchedResultController z inną sekcją. mam awarię gdy próbuję wyszukiwać za pomocą UISearchDisplayController:Awaria podczas wyszukiwania w dwóch sekcjach

*** 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])' 

sprawdziłem i moje wyszukiwanie tablica ma rzeczywiście dwie pozycje (oczekiwany wynik):

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 

It zwraca 1

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

To zwraca 2

Zabawne, jeśli mam tylko jedną sekcję, działa idealnie.

Pomoc, proszę! :)

Odpowiedz

38

Nie wiesz, jeśli zorientowaliśmy się, to myślę, że tak, ale przy założeniu, że używasz

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

w cellForRowAtIndexPath

zrobić

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

także upewnić się, używają self.tableView

+3

Czy mógłbyś wyjaśnić przyczynę tego? Zastanawiam się, bo może mi to pomóc w rozwiązaniu kolejnego problemu w przyszłości. – Jeremy1026

+9

Dzieje się tak, ponieważ pytasz self.tableView o komórkę. Ale indexPath, podczas wyszukiwania, jest ścieżką indeksu do tabeli wyszukiwania. Ścieżka indeksu nie musi być poprawna dla self.table, więc nie można do niej przekazać ścieżki indeksu. self.table musi zostać poproszony o komórkę, ponieważ CellIdentifier nie został zarejestrowany w tabeli wyszukiwania. –

+0

I tak, to wciąż głupia magia, żeby wszystko działało! :) –

Powiązane problemy