UITableView через NSFetchedResultsControllerDelegate, выбрать первую запись по умолчанию? - PullRequest
0 голосов
/ 17 апреля 2010

У меня есть UITableView, который заполняется из CoreData через контроллер, который реализует NSFetchedResultsControllerDelegate. Как я могу автоматически выбрать первую строку (и запустить сообщение tableView: didSelectRowAtIndexPath)?

Представление таблицы используется для различных запросов предикатов, поэтому я с подозрением отношусь к решениям, которые работают в жизненном цикле UIViewController (viewDidLoad и т. Д.), Но я новичок в платформе, поэтому я открыт. *

Я пробовал разные вещи, но я не уверен, где в стеке вызовов его разместить. Я пытался вызвать cell.selected = true внутри tableView: cellForRowAtIndex: метод, но это просто заканчивается тем, что ячейка становится черной (и не запускает выбранный метод обратного вызова)

Вопрос с тегами, со всеми протоколами делегирования и основных данных, подразумевает ли он асинхронную выборку данных (несколько потоков)? Или NSFetchedResultsController вызывает все связанные методы в одном потоке? Может быть, я просто боюсь, что если это будет асинхронно, будут условия гонки, которые потом будет сложно устранить.

Ответы [ 2 ]

0 голосов
/ 03 января 2011

Делай так:

if (indexPath.section == 0 && indexPath.row == 0) {
   //select first row by default
   [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionBottom];
   //then populate detail view with corresponding managedObject
   [self tableView:tableView didSelectRowAtIndexPath: indexPath];
}

Конечно, это предполагает, что вы уже правильно закодировали свой didSelectRowAtIndexPath.

0 голосов
/ 17 апреля 2010

Пока не могу добавлять комментарии, чтобы спросить, что вы пытаетесь сделать, когда ячейка выбрана, поэтому мне придется угадать.

Если вы хотите пометить ячейку как выбранную, вам следует использовать свойство accessoryType, например:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ...
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    ...
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...