На своем 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);
...
}
2 ответа
Как правило, убирать данные из представления - плохая идея. На самом деле вам не следует использовать какие-либо объекты представления для хранения информации.
Вы уже получаете строку, когда находитесь в методе cellForRowAtIndexPath
.
Вы должны иметь возможность сделать то же самое в didSelectRowAtIndexPath
, чтобы получить ту же строку.
Таким образом, вам вообще не нужно убирать текст с этикетки.
Благодарность
Если вы знаете, что 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);
//...
}
Похожие вопросы
Новые вопросы
ios
iOS - мобильная операционная система, работающая на Apple iPhone, iPod touch и iPad. Используйте этот тег [ios] для вопросов, связанных с программированием на платформе iOS. Используйте связанные теги [target-c] и [swift] для проблем, характерных для этих языков программирования.