Mam zamiar wyjść tutaj z mojego umysłu, w mojej bazie danych bazy danych Mam wielu użytkowników, mam podłączony bazę danych do tableviewcontroller za pośrednictwem NSFetchedResultController, a gdy widok ładuje, widzę wszystkich moich użytkowników, i Mogę wykonać push do elementu viewcontroller detail poprzez segregację scenorysków ... do tej pory, bóg, mój widok tabeli zawiera niestandardową komórkę z widokiem obrazu i 2 uitextlabele, które wszystkie mają przypisane ich wartości znaczników.UISearchDisplayController - dlaczego mój widok wyników wyszukiwania zawiera puste komórki?
Teraz, kiedy wykonuję wyszukiwanie Tworzę nowy NSFetchedResultController z predykatem i wykonuję performFetch .. Następnie otrzymuję właściwość fetchedObjects i zawiera ona pasujących użytkowników, więc żądanie wyszukiwania działa również jak urok .. we wszystkich moich danych o tabelach źródeł danych I sprawdź, czy self.tableView == self.searchdispl.view, aby zobaczyć, który kontroler powinien pobierać dane z .. We wszystkich przypadkach delegaci ntrollerów Sprawdzam, który kontroler jest aktywny, więc wiem, który widok ma zostać przeładowany. Jeśli loguję dużo danych, to wszystko jest w porządku, wszystkie metody delegatów i źródeł danych używają poprawnego widoku i kontrolera pobierania ..
W mojej komórceForRowAtIndexPath mogę wylogować się z mojego user.name, i to jest zawsze poprawne , także podczas wyszukiwania.
Problem polega na tym, że widok UISearchDisplayController, który jest tylko na wierzchu, zawiera puste komórki, chyba że ustawię komórkę dynamicznego prototypu UITableViewControllers na podstawową, a obie widoki tabeli zawierają tę etykietę z nazwą użytkownika! Segue z komórki nadal nie działa, ale są dane w komórce.
Wydaje się, że widok UISearchDisplayControllers to ogólny pogląd, przynajmniej jeśli chodzi o segues i układ komórek ...
Sprawdziłem wszystkie połączenia z UISearchDisplayController do mojego UITableViewController, a wszystko wygląda w porządku. ..
Dlaczego widok SearchDisplayControllers nie akceptuje mojego układu komórki i przenosisz?
Dziękuję :)
Update: właśnie zorientowali się, co jest nie tak, ale nie znaleziono jeszcze rozwiązania. W mojej komórceForRowAtIndexPath komórka jest zawsze skonfigurowana jako domyślna komórka, gdy thr searchdisplayview jest w tej metodzie. Czy naprawdę muszę utworzyć moją komórkę w kodzie, aby uisearchdisplay działał? Dlaczego nie może korzystać ze skonfigurowanej komórki z scenorysu?
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath: (NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"PersonCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
NSLog(@"Default Cell");
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
NSFetchedResultsController *controller = tableView == self.tableView ? self.fetchedResultsController : self.fetchedResultsControllerForSearch;
Person *p;
p = [controller objectAtIndexPath:indexPath];
[(UILabel*) [cell viewWithTag:1] setText:p.name];
[(UILabel*) [cell viewWithTag:2] setText:@"Status"];
if(p.avatarImage){
UIImage *avatar = [[UIImage alloc] initWithData:p.avatarImage];
[(UIImageView *) [cell viewWithTag:3] setImage:avatar];
}
return cell;
}
Ok, po prostu pozwolę temu usiąść tutaj, chociaż zorientowałem się, co było nie tak, jestem nieco zakłopotany, ale może ten post może pomóc innym :) Problem polegał na tym, że kiedy dostałem komórka w cellforrowatindexpath, nie otrzymała go z oryginalnego widoku tablecontrollers, więc zmieniłem linię z UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier]; do UITableViewCell * cell = [self.tableView dequeueReusableCellWithIdentifier: CellIdentifier] ;, a teraz wszystko jest w porządku, komórka ma układ z storyboardu, a segues działa jak urok :) –
To naprawdę działa, powinieneś opublikować to jako odpowiedź na własne pytanie! –