Подтвердить что ты не робот

UISearchDisplayController - почему в моем представлении результата поиска есть пустые ячейки?

Я собираюсь сходить с ума здесь, в моем базовом ядре Data Data у меня много пользователей, я подключил базу данных до контроллера tableview через NSFetchedResultController, а когда загружается представление, я вижу всех моих пользователей, и я могу выполнить push to detail viewcontroller через серию раскадровки... до сих пор, так что бог, в моем табличном представлении содержится пользовательская ячейка с представлением изображения и 2 uitextlabels, для которых все имеют свои значения тегов.

Теперь, когда я выполняю поиск, я создаю новый NSFetchedResultController с предикатом и выполняет performFetch. Затем я получаю свойство fetchedObjects, и он содержит пользователей, которые соответствуют, поэтому запрос поиска также работает как шарм.. во всех моих табличных источниках данных я проверяю, если self.tableView == self.searchdispl.view, чтобы посмотреть, какой контроллер я должен запрашивать из данных. Во всех делегатах контроллеров я проверяю, какой контроллер активен, поэтому я знаю, какой вид перезагрузить, Если я nslog много данных, то все в порядке за кулисами, методы делегата и источника данных используют правильный просмотр и выборку.

В моей cellForRowAtIndexPath я могу выйти из моего user.name, и это всегда правильно, также при поиске.

Проблема в том, что представление UISearchDisplayController, которое находится сверху, имеет только пустые ячейки, если я не установил базовую ячейку динамического прототипа UITableViewControllers в базовый, тогда оба табличных представления содержат эту метку с именем пользователя! Сегмент из ячейки все еще не работает, но в ячейке есть данные.

Кажется, что представление UISearchDisplayControllers является общим представлением, по крайней мере, когда речь заходит о segues и раскладке ячеек...

Я проверил все соединения из UISearchDisplayController на мой UITableViewController, и все выглядит нормально...

Почему в представлении SearchDisplayControllers не будет приниматься мой макет ячейки и выходить?

Спасибо:)

Обновление: только что выяснилось, что происходит не так, но пока не найдено решение. В моей cellForRowAtIndexPath ячейка всегда настроена как ячейка по умолчанию, когда thr searchdisplayview находится в этом методе. Действительно ли мне нужно создать свою ячейку в коде для работы uisearchdisplay? Почему он не может использовать сконфигурированную ячейку из раскадровки?

- (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;

}

4b9b3361

Ответ 1

Проблема заключалась в том, что когда я получил ячейку в cellforrowatindexpath, она не получала ее из исходного вида viewcontrollers tableview, поэтому я изменил строку из

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

to

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];

и теперь все хорошо, ячейка имеет макет из раскадровки, а segues работает как шарм.