UITableViewController didSelectRowAtIndexPath: (NSIndexPath *) indexPath - PullRequest
0 голосов
/ 27 ноября 2011

Как я могу ссылаться на объект ячейки, по которому щелкнули внутри метода indexSath didSelectRowAtIndexPath: (NSIndexPath *)?

У меня есть UISplitViewController, а в MasterView у меня есть таблица с ячейками, где cell.tag= первичный ключ из базы данных sqlite (т. е. таблица заполняется из базы данных).Я могу зафиксировать событие click в вышеприведенном методе, но не вижу, как передать объект ячейки или как ссылаться на него в противном случае, чтобы попасть в cell.tag.В конечном счете, цель состоит в том, чтобы передать этот идентификатор в подробный вид через делегата Master / Detail, а затем загрузить данные в DetailView на основе идентификатора, полученного от Master.

Любые советы приветствуются!

Редактировать:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }

    // Configure the cell.
    cell.textLabel.text = NSLocalizedString(@"Detail", @"Detail");
    Entry *entry = [self.entries objectAtIndex:[indexPath row]];
    [[cell textLabel] setText:[NSString stringWithFormat:@"%@",entry.title]];
    cell.tag = entry.entryID;
    return cell;
}

Ответы [ 4 ]

4 голосов
/ 27 ноября 2011

Поскольку у вас уже есть массив записей, вы также можете написать следующее.

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    Entry *entry = [self.entries objectAtIndex:[indexPath row]];
}

Я думаю, что это предпочтительный способ, чем cellForRowAtIndexPath: потому что

  • Вы можете получить весь объект ввода, а не только идентификатор.
  • Вы можете использовать нецелочисленный идентификатор, например строку.
  • Вы не зависите от таблицы или ячейки (развязки).
4 голосов
/ 27 ноября 2011

В didSelectRowAtIndexPath:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
}

Обратите внимание, как запрос таблицы для cellForRowAtIndexPath: возвращает ячейку, тогда как запрос контроллера tableView:cellForRowAtIndexPath: запускает метод делегата.

2 голосов
/ 27 ноября 2011

Вы можете использовать метод cellForRowAtIndexPath , чтобы получить UITableViewCell из NSIndexPath.

0 голосов
/ 27 ноября 2011

Вы можете сохранить все идентификаторы в NSMutableArray, а затем передать этим методом в другой класс.

classInstanceName.IntVariableName=[[taskIdArray objectAtIndex:indexPath.row]intValue]

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