12

Farklı bölümlere sahip bir NSFetchedResultController sahibiyim. Ben UISearchDisplayController kullanarak arama denediğimde bir kilitlenme var: ben kontrolİki bölümde arama yaparken çökme

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

ve arama dizi gerçekten iki giriş (beklenen sonuç) sahiptir:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 

O döner 1

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

döndürüyor 2

Komik şey, sadece bir bölümüm varsa, mükemmel çalışır.

Yardım lütfen! :)

cevap

38

bunu anladım eğer, sanırım öyle ama varsayarak aşağıdakilerden de emin

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

yapmak için cellForRowAtIndexPath içinde

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

kullandığınızdan emin değil misiniz self.tableView

+3

'u kullanıyor Bunun sebebini açıklayabilir misiniz? Sadece merak ediyorum, gelecekte başka bir sorunu çözmeme yardımcı olabilir. – Jeremy1026

+9

Bunun nedeni, bir hücreye self.tableView soruyorsunuzdur. Ancak, indexPath, arama yaparken, arama tablosuna bir dizin yoludur. Dizin yolu, self.table için zorunlu olarak geçerli değildir, bu nedenle bu dizin yolu ona geçirilemez. CellIdentifier'ın arama tablosuyla kayıtlı olmadığı için self.table'ın hücreye sorulması gerekir. –

+0

Ve evet, işlerin yürümesi için hala aptal bir sihir! :) –

İlgili konular