2012-01-21 4 views
0

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

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

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; 
+0

Отправьте код, который вы используете для заполнения ячейки. –

ответ

1

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

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

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

+0

У меня была какая-то проблема, поскольку у меня было больше вещей, чтобы показать в моей камере. И я, являющийся стартером, не мог обрабатывать часть выравнивания, не добавляя больше меток и кнопок вместо использования свойств текста ячеек и аксессуаров. –

+0

Вместо использования viewWithTag я бы подклассифицировал UITableViewCell и выставлял ваши данные через свойства - это сделало бы ваш код немного более читаемым. – deanWombourne

+0

Если у вас есть не один ярлык, я согласен с @deanWombourne, вы должны подклассифицировать UITableViewCell и добавить туда все свойства. Вы можете инициализировать метод cell init и установить кадр каждого дополнительного представления в layoutSubviews – wattson12

1

В методе -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. 
} 
2

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

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

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

Смежные вопросы