【问题标题】:How can I use text from a table view cell and display it as a label in a parent view controller?如何使用表格视图单元格中的文本并将其显示为父视图控制器中的标签?
【发布时间】:2014-03-20 03:45:12
【问题描述】:

我正在尝试找出使用 UITableViewCell 中的文本在其父视图中设置/更改 UILabel 的最佳方法。我希望在用户点击一行时完成。为了更清楚起见,这里是一个简化的物理表示:

从这里:

http://i.stack.imgur.com/O9ipE.png

对此,当用户点击该行时:

http://i.stack.imgur.com/fmeIb.png

我在想我可能只需要使用委托和协议,但是我将如何实际更改 UILabel?那不只是将文本传回,而不是将其传回并更改 UILabel 吗?另外,我不太了解 unwind segues,但我可以使用其中一个来代替吗?

【问题讨论】:

标签: ios objective-c uitableview uistoryboardsegue


【解决方案1】:

是的,您将使用委托方法将数据传递回父级。由于您使用某种数组数据源来填充表格,因此您已经可以以干净的格式访问这些值(而不是从 tableViewCell 的层次结构中提取)。

从你的表 vc:

@protocol MyTableViewDelegate
-(void)didSelectText:(NSString *)text;
@end

然后在你的父 VC 中实现-didSelectText:。

当用户选择单元格时,您将拥有 indexPath,它为您提供一个部分和行。

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // It's good practice to do this check first
    if([self.delegate respondsToSelector:@selector(didSelectText:)]){
          //basically pull the value out of your data source and send it to the delegate
        [self.delegate didSelectText: self.arrayDataSource[indexPath.section][indexPath.row]];
        [self dismissViewControllerAnimated:YES completion:nil];
    }
}

【讨论】:

  • 哦,没关系,我只是对一般委托/协议的概念感到困惑。我什至没有考虑主视图控制器将如何自动调用协议方法。粗心的错误。不过谢谢!
猜你喜欢
  • 2010-09-25
  • 1970-01-01
  • 1970-01-01
  • 2020-12-18
  • 2020-06-25
  • 1970-01-01
  • 2021-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多