Я хотел бы знать, как получить строковое значение textLabel
для выбранного uitableviewcell
.
Получите textLabel текст выбранной ячейки с помощью iPhone SDK
Ответ 1
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
// now you can use cell.textLabel.text
}
Ответ 2
Вы можете получить ячейку, используя [self.tableView cellForRowAtIndexPath:], а затем получить доступ к свойству textLabel.text, но обычно это лучший способ.
Обычно вы заполняете свою таблицу на основе некоторого массива моделей, к которому имеет доступ ваш UITableViewController. Таким образом, лучший способ справиться с этим в большинстве случаев - взять номер строки ячейки, которая была выбрана, и использовать ее для поиска связанных данных в вашей модели.
Например, предположим, что ваш контроллер имеет массив объектов Buddy
, у которых есть свойство name
:
NSArray *buddies;
Вы заполняете этот массив, запуская запрос или что-то в этом роде. Затем в tableView:cellForRowAtIndexPath:
вы создаете ячейку представления таблицы на основе каждого имени приятеля:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BuddyCell"];
if (!cell) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"BuddyCell"] autorelease];
}
cell.textLabel.text = [buddies objectAtIndex:indexPath.row];
return cell;
}
Теперь, когда пользователь выбирает строку, вы просто вытаскиваете соответствующий объект Buddy из своего массива и делаете что-то с ним.
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Buddy *myBuddy = [buddies objectAtIndex:indexPath.row];
NSLog (@"Buddy selected: %@", myBuddy.name);
}
Ответ 3
if (selected)
{
indicator.image = [UIImage imageNamed:@"IsSelected.png"];
[arrSlectedItem addObject:strselecteditem];
NSLog(@"-- added name is %@", strselecteditem);
}
else
{
indicator.image = [UIImage imageNamed:@"NotSelected.png"];
[arrSlectedItem removeObject:strselecteditem];
NSLog(@"--- remove element is -- %@", strselecteditem);
}
Ответ 4
Если кто-то споткнется об этом и задается вопросом, как это сделать быстро, код ниже. Также не забудьте использовать необязательную привязку, чтобы развернуть эту опцию, а также не распечатывать "Необязательно (" Метка с меткой ").
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableView.cellForRowAtIndexPath(indexPath)
// Unwrap that optional
if let label = cell?.textLabel?.text {
println("Tapped \(label)")
}
}
Ответ 5
Вот что я использовал: очень просто
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath){
if editingStyle == UITableViewCellEditingStyle.Delete
{
//create cellobj with indexpath for get it text
let cell = tableView.cellForRowAtIndexPath(indexPath)
let celltext = (cell?.textLabel?.text!)! as String
//do what ever you want with value
print((cell?.textLabel?.text!)! as String)
}
}