swift 获取另一个 ViewController 中选定单元格的数据(以编程方式)
swift getting data for selected cell in another ViewController (programatically)
这个问题已经回答了很多次了。但是我能在上面找到的答案对我不起作用,因为我似乎无法调用单元格的 class.
进一步说明:
我有一个带有 UITable 的 viewController。单元格在 UITableViewCell class 中配置。 (就是从这个class需要拉取资料的)
我的 "cell class" 被称为 mySuggestionsCel
这是我的 "didSelectRowAtIndexPath"
代码
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.allowsSelection = false
var selectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
var VC = detaiLSuggestion_VC()
self.navigationController?.pushViewController(VC, animated: true)
if selectedCell.backgroundColor == UIColor.formulaFormColor() {
selectedCell.backgroundColor = UIColor.formulaMediumBlue()
UIView.animateWithDuration(0.5, animations: {
selectedCell.backgroundColor = UIColor.formulaFormColor()
})
} else {
selectedCell.backgroundColor = UIColor.formulaGreenColor()
UIView.animateWithDuration(0.5, animations: {
selectedCell.backgroundColor = UIColor.formulaLightGreenColor()
})
}
}
我试过
mySuggestionsCell.someVariable
我也试过了selectedCell.someVariable
都没用。
我需要从我的 detailSuggestion_VC(),从我的手机 Class 中获取此信息。但是它需要提取的数据是被选中的特定单元格所具有的数据。这就是为什么我在让它工作时遇到一些问题。
我环顾四周。但找不到任何关于此特定问题的问题或答案。
如有任何帮助,我们将不胜感激
我做出以下假设:
- 您有一个 tableViewCell class 文件来控制您的 table 单元格。
您有一个详细视图控制器,当您点击一个单元格时,您的 table 会转到该控制器。
您要做的是传递被点击的单元格的信息,以便您的新视图控制器拥有所有单元格的信息。
而不是这个:
var selectedCell: UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
您将需要对 tableViewCell class 进行类型转换。像这样:
var selectedCell = tableView.cellForRowAtIndexPath(indexPath)! as tableViewCell
接下来您需要做的是调用以下函数:
performSegueWithIdentifier(/*Segue Identifier goes here*/, sender: selectedCell)
进行此调用会将 selectedCell 的内容传递给 sender,可用于 prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject)
确保在 class 中的某处覆盖 prepareForSegue。
现在,在 prepareForSegue: 中,您可以获得对 destinationViewController 的引用,并初始化 destinationViewController 中的实例变量,该实例变量将保存您的 selectedCell 的变量。
//in prepareForSegue
let controller = segue.destinationViewController as detailSuggestion_VC
controller.cellInfo = sender
这个问题已经回答了很多次了。但是我能在上面找到的答案对我不起作用,因为我似乎无法调用单元格的 class.
进一步说明:
我有一个带有 UITable 的 viewController。单元格在 UITableViewCell class 中配置。 (就是从这个class需要拉取资料的)
我的 "cell class" 被称为 mySuggestionsCel
这是我的 "didSelectRowAtIndexPath"
代码func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
tableView.allowsSelection = false
var selectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
var VC = detaiLSuggestion_VC()
self.navigationController?.pushViewController(VC, animated: true)
if selectedCell.backgroundColor == UIColor.formulaFormColor() {
selectedCell.backgroundColor = UIColor.formulaMediumBlue()
UIView.animateWithDuration(0.5, animations: {
selectedCell.backgroundColor = UIColor.formulaFormColor()
})
} else {
selectedCell.backgroundColor = UIColor.formulaGreenColor()
UIView.animateWithDuration(0.5, animations: {
selectedCell.backgroundColor = UIColor.formulaLightGreenColor()
})
}
}
我试过
mySuggestionsCell.someVariable
我也试过了selectedCell.someVariable
都没用。
我需要从我的 detailSuggestion_VC(),从我的手机 Class 中获取此信息。但是它需要提取的数据是被选中的特定单元格所具有的数据。这就是为什么我在让它工作时遇到一些问题。
我环顾四周。但找不到任何关于此特定问题的问题或答案。
如有任何帮助,我们将不胜感激
我做出以下假设:
- 您有一个 tableViewCell class 文件来控制您的 table 单元格。
您有一个详细视图控制器,当您点击一个单元格时,您的 table 会转到该控制器。
您要做的是传递被点击的单元格的信息,以便您的新视图控制器拥有所有单元格的信息。
而不是这个:
var selectedCell: UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)!
您将需要对 tableViewCell class 进行类型转换。像这样:
var selectedCell = tableView.cellForRowAtIndexPath(indexPath)! as tableViewCell
接下来您需要做的是调用以下函数:
performSegueWithIdentifier(/*Segue Identifier goes here*/, sender: selectedCell)
进行此调用会将 selectedCell 的内容传递给 sender,可用于 prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject)
确保在 class 中的某处覆盖 prepareForSegue。
现在,在 prepareForSegue: 中,您可以获得对 destinationViewController 的引用,并初始化 destinationViewController 中的实例变量,该实例变量将保存您的 selectedCell 的变量。
//in prepareForSegue
let controller = segue.destinationViewController as detailSuggestion_VC
controller.cellInfo = sender