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

- (UITableViewCell *) tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ...
    Groups *group = [self.fetchedObjects objectAtIndex:indexPath.row];
    cell.groupDescriptionLabel.text = group.group_descr;
    cell.groupIDLabel.text = [group.group_id stringValue];    
    return cell;
}

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // capture the user selection
    Groups *group = [self.fetchedObjects objectAtIndex:indexPath.row];
    UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
    NSString *selection = selectedCell.groupDescriptionLabel.text;  //<-- pseudo-code

    NSLog(@"%@", group.group_descr);

    ...    
}
1
AndroidDev 8 Янв 2014 в 21:48

2 ответа

Лучший ответ

Как правило, убирать данные из представления - плохая идея. На самом деле вам не следует использовать какие-либо объекты представления для хранения информации.

Вы уже получаете строку, когда находитесь в методе cellForRowAtIndexPath.

Вы должны иметь возможность сделать то же самое в didSelectRowAtIndexPath, чтобы получить ту же строку.

Таким образом, вам вообще не нужно убирать текст с этикетки.

Благодарность

2
Fogmeister 8 Янв 2014 в 18:10

Если вы знаете, что celForRowAtIndexPath будет возвращать один из ваших пользовательских типов ячеек вместо универсального UITableViewCell, приведите результат к своему пользовательскому классу ячеек:

- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // capture the user selection
    MyCellClass *selectedCell = (MyCellClass *) [tableView cellForRowAtIndexPath:indexPath];
    NSString *selection = selectedCell.groupDescriptionLabel.text;  //<-- pseudo-code
    NSLog(@"%@", selection);
    //...
}
1
Duncan C 8 Янв 2014 в 17:55