如何将数据从 UITableViewCell 传输到另一个 UIViewController?
Posted
技术标签:
【中文标题】如何将数据从 UITableViewCell 传输到另一个 UIViewController?【英文标题】:How to transfer data from a UITableViewCell to another UIViewController? 【发布时间】:2016-04-26 00:59:51 【问题描述】:
如何通过 UINavigationController 将数据从 UITableViewCell 传输到 UIViewController?例如,我想做的是将 UITableViewCell 标签名称从单元格传输到 ViewController 的标签。如果你看这两张照片,你就会明白我的意思。另外,另一方面,我一般如何将数据从一个视图传输到另一个视图?谢谢
【问题讨论】:
您可以使用 UITableViewDelegate 实现func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
或使用 UIViewController 方法func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
将数据传递给目标视图控制器。
你应该使用动态注入,列出的答案是一个糟糕的答案,通过重载初始化动态注入是根据设计模式中的最佳实践进行编码的正确方法。
【参考方案1】:
在接收器视图控制器中
在.h文件中
@interface ViewController : UIViewController
@property (strong, nonatomic) NSString *strDataOfCell;
@end
在这里让它变得强大所以留在记忆中
在表视图委托方法中
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
ViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"yourViewIdentifer"];
NSString *strData = [self.yourArrayOfData objectAtIndex:indexPath.row]; // Here Put your code to Get value from data source array , which is loaded in tableview
vc.strDataOfCell = strData;
[self.navigationController pushViewController:vc animated:YES];
希望对你有帮助:)
【讨论】:
谢谢!我无法这样做,因为我使用的是与 github 不同的框架,但您的示例代码允许我搜索正确的内容来回答我的问题。总的来说,谢谢!【参考方案2】:您可以在要传输的视图控制器头文件中声明属性。 如果您浏览代码。您可以在表视图 didSelectRowAtIndexPath 中将标签分配给此视图控制器。 如果您浏览故事板segue。您可以在 prepareForSegue:sender: 中将标签分配给此视图控制器。
【讨论】:
您能否在代码中给我一个这样的示例,例如您如何定义导航控制器以将数据发送到 prepareForSegue: 方法中的视图的快速 sn-p:请?我还是卡住了。【参考方案3】:我的问题的答案在于“prepareForSegue”方法。这一切都是关于操纵发送者对象将其数据发送到下一个视图控制器,并根据发送者设置下一个视图控制器的数据。我将发送者转换为自定义 UITableViewCell,获取单元格的标题,将导航控制器的根视图设置为将要接收数据的视图控制器,然后将数据发送给它。
【讨论】:
以上是关于如何将数据从 UITableViewCell 传输到另一个 UIViewController?的主要内容,如果未能解决你的问题,请参考以下文章
使用 unwind segues 通过 UITableViewcell 推送数据
Swift - 如何将数据从 UITableViewCell 类传递到 UIViewController
如何将数据从 uitableviewcontroller 发送到 uitableviewcell
UITableViewCell 中的 UICollectionView 如何设置选择以将数据从当前视图传递到另一个视图