我试图找出最好的方法让我使用UITableViewCell中的文本在其父视图中设置/更改UILabel。我希望当用户点击一行时完成它。为了更清楚,这里是一个简化的物理表示:
由此:
http://i.stack.imgur.com/O9ipE.png
对此,当用户点击该行时:
http://i.stack.imgur.com/fmeIb.png
我在想我可能只需要使用代表&协议,但那我将如何实际更改UILabel?难道只是将文本传回去,而不是将其传回并改变UILabel?此外,我不太了解放松细分,但是我可以使用其中一个来做这个吗?
答案 0 :(得分:0)
是的,您可以使用委托方法将数据传回父级。由于您使用某种数组数据源来填充表,因此您已经可以以干净的格式访问这些值(而不是从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];
}
}