我想知道如何获取所选textLabel
的{{1}}字符串值。
答案 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)
}
}