所以,我有2个视图控制器:
我在Table View Controller的每个Table View Cell和第二个View Controller之间创建了segues,每个segue都有标识符" 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。
但是,我想将任何按下的俱乐部的名称传递给第二个视图控制器,我不太清楚如何做到这一点。 任何帮助,将不胜感激。 谢谢!
答案 0 :(得分:0)
请勿通过视图标记获取您的分会名称。
而是使用tableView.indexPathForSelectedRow.row
来获取索引。
类似let clubName = clubNames[tableView.indexPathForSelectedRow.row]
的东西,其中clubNames是带有俱乐部名称的数组。
修改:
我没有看到你使用的是静态细胞。 发件人是您的UITableViewCell,因此您可以通过这种方式获取标签。
let cell = sender as! UITableViewCell
let clubName = cell.textLabel.text
答案 1 :(得分:-1)
你的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获取你的俱乐部的索引,然后从阵列中正确发送俱乐部的名称。这意味着俱乐部名称必须在一个数组中(与俱乐部描述相同)。