使用iPhone SDK获取所选Cell的textLabel文本

时间:2010-09-10 14:47:19

标签: iphone uitableview

我想知道如何获取所选textLabel的{​​{1}}字符串值。

5 个答案:

答案 0 :(得分:50)

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
   UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
   // now you can use cell.textLabel.text
}

答案 1 :(得分:3)

您可以使用[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);
}

答案 2 :(得分:1)

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);
}

答案 3 :(得分:0)

如果有人偶然发现这一点,并想知道如何在swift中执行此操作,则代码如下所示。另请记住使用可选绑定来打开该可选项,并避免打印出“Optional(”Tapped Item Label“)”。

    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)")
        }
    }

答案 4 :(得分:0)

这里我用的是什么;非常简单

    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)



    }
}