Как получить данные о выборе ячейки из пользовательского UITableview - PullRequest
0 голосов
/ 21 января 2012

Может быть, глупый вопрос.

У меня есть UITableview с несколькими ячейками. В каждой ячейке я показываю некоторые данные. Я не использую свойство text ячейки для отображения данных. Вместо этого у меня есть собственная метка внутри моей ячейки, которая отображает текст. Мой вопрос: Когда я нажимаю на ячейку, мне нужно извлечь данные из ячейки. Как я могу это сделать.

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


    UILabel *CellTextlabel = [[UILabel alloc] init];
    CellTextlabel.tag = 222;
    [CellTextlabel setFrame:CGRectMake(40, 5, 200, 20)];
    [cell.contentView addSubview:CellTextlabel];
    [CellTextlabel release];
  }


UILabel *editCellTextlabel = (UILabel *)[cell.contentView viewWithTag:222];
editCellTextlabel.font = [UIFont boldSystemFontOfSize:18];
editCellTextlabel.text = contact.lastName;

Ответы [ 3 ]

2 голосов
/ 21 января 2012

В вашем методе didSelectRowAtIndexPath вы можете сделать это следующим образом:

UITableViewCell *cell = (UITableViewCell *)[self.tableViecellForRowAtIndexPath:indexPath];         
UILabel *textLabel = (UILabel *)[cell viewWithTag:222];

Теперь вы можете получить данные в UILabel ячейки, используя textLabel.text

1 голос
/ 21 января 2012

Вы можете получить доступ к этой метке в didSelectRowAtIndexPath: с помощью

UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
UILabel *myLabel = [cell.contentView viewWithTag:222];

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

1 голос
/ 21 января 2012

В методе -tableView:didSelectRowAtIndexPath: вы можете получить данные из массива tableView:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    id objectForCell = [self.myArray objectAtIndex:indexPath.row];
    //do what you want with the above data.
}
...