Получить текст textLabel выбранной ячейки с помощью iPhone SDK - PullRequest
20 голосов
/ 10 сентября 2010

Я хотел бы знать, как получить textLabel строковое значение выбранного uitableviewcell.

Ответы [ 5 ]

50 голосов
/ 10 сентября 2010
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
   UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
   // now you can use cell.textLabel.text
}
3 голосов
/ 10 сентября 2010

Вы можете получить ячейку, используя [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);
}
1 голос
/ 03 октября 2012
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);
}
0 голосов
/ 14 сентября 2016

Вот что я использовал; очень просто

    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)



    }
}
0 голосов
/ 18 марта 2015

Если кто-то наткнулся на это и интересуется, как это сделать быстро, приведенный ниже код. Также не забудьте использовать необязательную привязку, чтобы развернуть эту необязательную информацию, а также не печатать «Необязательный (« Метка нарезанного элемента »)».

    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)")
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...