Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何将信息从一个视图控制器中的表视图单元格传递到另一个视图控制器?_Ios_Iphone_Xcode_Swift_Ios9 - Fatal编程技术网

Ios 如何将信息从一个视图控制器中的表视图单元格传递到另一个视图控制器?

Ios 如何将信息从一个视图控制器中的表视图单元格传递到另一个视图控制器?,ios,iphone,xcode,swift,ios9,Ios,Iphone,Xcode,Swift,Ios9,因此,我有两个视图控制器: 具有可按下的俱乐部名称列表的表视图控制器。它有一个名为ClubsTableViewController的自定义类 一个视图控制器,我将使用它来显示被按下的俱乐部的描述。我想重用这个视图控制器,根据按下哪个俱乐部显示不同的信息。它有一个名为ClubDetailViewController的自定义类 我已经在Table View控制器的每个Table View单元格和第二个View控制器之间创建了分段,每个分段都有标识符“showClubDetails” 我在Clubs

因此,我有两个视图控制器:

  • 具有可按下的俱乐部名称列表的表视图控制器。它有一个名为ClubsTableViewController的自定义类
  • 一个视图控制器,我将使用它来显示被按下的俱乐部的描述。我想重用这个视图控制器,根据按下哪个俱乐部显示不同的信息。它有一个名为ClubDetailViewController的自定义类
  • 我已经在Table View控制器的每个Table View单元格和第二个View控制器之间创建了分段,每个分段都有标识符“showClubDetails”

    我在ClubsTableViewController.swift文件中有以下方法:

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "showClubDetails" {
            let detailsController = segue.destinationViewController as! ClubDetailViewController;
            if let name = self.view.viewWithTag(1) as? UILabel {
                detailsController.clubNameString = name.text!
                detailsController.clubDescriptionString = clubDescriptions[name.text!]!
            }
        }
    }
    
    我使用此方法将从第一个视图控制器按下的俱乐部名称传递到第二个视图控制器。上面的代码适用于表视图的第一个单元格(“上图中的大赦国际”),因为我给了它标签1

    但是,我想将任何俱乐部的名称传递到第二个视图控制器,我不太确定如何执行此操作。 任何帮助都将不胜感激。
    谢谢

    不要通过查看标签获取您的俱乐部名称

    而是使用
    tableView.indexPathForSelectedRow.row
    获取索引。 类似于
    let clubName=clubNames[tableView.indexPathForSelectedRow.row]
    其中clubNames是包含俱乐部名称的数组

    编辑:

    我没看到你用的是静态电池。 发件人是您的UITableViewCell,因此您可以通过这种方式获取标签

    let cell = sender as! UITableViewCell
    let clubName = cell.textLabel.text
    

    您的segue应该如下所示:

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "showClubDetails" {
    
        let indexPath:NSIndexPath = tableView.indexPathForSelectedRow!
    
        let detailsController = segue.destinationViewController as! ClubDetailViewController;
    
            detailsController.clubNameString = names[indexPath.row]
            detailsController.clubDescriptionString = clubDescriptions[indexPath.row]
    }
    
    }

    编辑:


    indexPath获取俱乐部的索引,然后从数组中正确发送俱乐部名称。这意味着俱乐部名称必须在一个数组中(与俱乐部描述相同)。

    当选择“性能”格中的单元格时,请自行调用。使用从VC1到VC2(ClubDetailViewController)的一个分段。我尝试了您建议的方法,但出现了以下错误:致命错误:在展开可选值时意外发现nil断点位于以下行:let clubName=cell.textLabel!。短信!您是否已将标签添加到单元格中?还是使用默认的表格视图单元格样式?我自己为每个静态单元格添加了一个标签。默认的表格视图单元格样式是什么?正如我在文章中提到的,使用let clubName=clubNames[tableView.indexPathForSelectedRow.row],clubNames是您的俱乐部名称数组。然后detailsController.clubDescriptionString=clubDescriptions[clubName]我使用了以下行:detailsController.clubDescriptionString=clubDescriptions[clubNames[indexPath.row]!相反,因为我将描述作为值存储在字典中,它起作用了。非常感谢。