Ios 如何使用表视图单元格中的文本并将其显示为父视图控制器中的标签?
我正在尝试找出使用UITableViewCell中的文本在其父视图中设置/更改UILabel的最佳方法。我希望它能在用户点击一行时完成。为了更清楚,这里是一个简化的物理表示: 由此: 为此,当用户点击该行时:Ios 如何使用表视图单元格中的文本并将其显示为父视图控制器中的标签?,ios,objective-c,uitableview,uistoryboardsegue,Ios,Objective C,Uitableview,Uistoryboardsegue,我正在尝试找出使用UITableViewCell中的文本在其父视图中设置/更改UILabel的最佳方法。我希望它能在用户点击一行时完成。为了更清楚,这里是一个简化的物理表示: 由此: 为此,当用户点击该行时: 我在想,我可能只需要使用委托和协议,但我实际上如何更改UILabel?这不就是将文本传递回原处,而不是将其传递回原处并更改UILabel吗?另外,我不太了解展开段,但是我可以用其中一个来代替吗?是的,您可以使用委托方法将数据传递回父级。由于您使用某种数组数据源来填充表,因此您已经可以以
我在想,我可能只需要使用委托和协议,但我实际上如何更改UILabel?这不就是将文本传递回原处,而不是将其传递回原处并更改UILabel吗?另外,我不太了解展开段,但是我可以用其中一个来代替吗?是的,您可以使用委托方法将数据传递回父级。由于您使用某种数组数据源来填充表,因此您已经可以以干净的格式访问这些值(而不是从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];
}
}
可能重复的检查或。哦,没关系,我只是把代表/协议的概念搞混了。我甚至没有考虑主视图控制器将如何自动调用协议方法。粗心的错误。谢谢你!