【问题标题】:Swift pass the value from main to another viewcontroller with storyboard segue [duplicate]Swift将值从main传递到另一个带有故事板segue的视图控制器[重复]
【发布时间】:2019-04-17 18:14:15
【问题描述】:

当用户单击tableView 单元格时,我正在尝试实现,选择的cell 值需要pass 详细信息viewcontroller。在这里,我通过storyboard 建立的transition 连接(不是以编程方式)并呈现我使用的模态转换。

我想知道怎么做,所以举个例子吧。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

   // here I need implement get selected index path and passing values to another vc

} 

【问题讨论】:

  • 你好@matt 你应该先完整阅读我的问题。我要求 Swift 并提出模态转换。您的重复引用不同的过渡也是客观的C。请删除您的标记。它将帮助很多像我这样的开发人员。

标签: ios swift uitableview storyboard segue


【解决方案1】:

如下使用preparefor(segue:)

我假设几件事

  1. 您当前的视图控制器正在显示播放器列表。
  2. 您正在显示玩家列表。
  3. 点按您想显示玩家详细信息的玩家。
  4. 您的播放器详细信息视图控制器名称是 PlayerDetailsVC
  5. 您是一组Players 模型,您正在表格视图中显示。
  6. 从情节提要中,您的 tableview 选择模式是 single selection

基于这些假设,您的代码将如下所示

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let indexPath = tableView.indexPathForSelectedRow{
        let selectedRow = indexPath.row
        let PlayerDetailsVC= segue.destination as! DetailViewController
        let member = "\(players[selectedRow].name ?? "")"
        PlayerDetailsVC.player = member
    }
}

DetailViewcontroller下面需要做

var player:String? //print it within viewdidload

【讨论】:

  • 感谢您的回答。请提供更详细的代码。@Ratul Sharker
  • 请检查答案,我已经更新了。
  • 我在 DetailViewController.player = teams[indexPath.row] 上遇到错误,实例成员 'player' 不能用于类型 'DetailViewController'。 @Ratul Sharker
  • 密切关注代码,这里我使用的是DetailViewController 的实例,而不是直接使用类本身。
  • 当然!你可以。您可以实例化 DetailViewController 在其中注入 Player 模型,然后以模态方式呈现详细信息 vc。但在此之前,请检查您的 segue 标识符,并且您正在使用正确类的可选绑定。另一件事是检查,故事板中的详细 vc 的自定义类设置为DetailViewController
猜你喜欢
  • 2015-05-02
  • 1970-01-01
  • 1970-01-01
  • 2019-10-13
  • 1970-01-01
  • 1970-01-01
  • 2018-04-09
  • 1970-01-01
  • 2018-12-12
相关资源
最近更新 更多