我想使用 didSelectRowAt 将数组从 UITableView 显示到下一个 viewController
Posted
技术标签:
【中文标题】我想使用 didSelectRowAt 将数组从 UITableView 显示到下一个 viewController【英文标题】:I want to display Array from UITableView to the next viewController using didSelectRowAt 【发布时间】:2018-08-31 04:52:17 【问题描述】:我希望 quizNumber
根据选择的单元格返回 quizNumberArray
。
例如,如果用户选择了第一个单元格,quizNumber
返回 1
UITableViewController 内部
let quizNumberArray = [1,2,3,4,5,6,7,8,9,10]
var quizNum = Int()
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
let vc = storyboard?.instantiateViewController(withIdentifier: "toQuestionVC") as? QuestionVC
quizNum = quizNumberArray[indexPath.row]
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
if let identifier = segue.identifier
if identifier == "toQuestionVC"
let questionController = segue.destination as! QuestionVC
questionController.quizNumber = quizNum
在下一个 ViewController 中
class QuestionVC : UIViewController
var quizNumber = Int()
func updateQuestion()
if quizNumber == 1
//.....
但是quizNumber
返回 0。
【问题讨论】:
当您推送到 QuestionVC 时?在 didselect 本身?? 不,使用 segue 所以你必须在那里传递价值或从 didselect 推送 我如何在那里传递价值? 您是否尝试过覆盖prepare
?
【参考方案1】:
试试这个代码:
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
let vc = storyboard?.instantiateViewController(withIdentifier: "toQuestionVC") as? QuestionVC
vc?.quizNumber = quizNumberArray[indexPath.row]
navigationController?.pushViewController(vc!, animated: true)
并删除 segue 以使用上述代码
【讨论】:
我是用segue传数据的,还有别的方法吗? @Tameem 但您只会在 didselect 中获得正确的值,所以我认为上述方法更好,否则您必须将索引保存在变量中并在 segue 中传递。 @Shazed 我有另一个数据要通过 segue,所以我尝试在 didSelectRowAtquizNum = quizNumberArray[indexPath.row]
的 var var quizNum = Int()
中保存索引,并在 func 中为 segue let questionController = segue.destination as! QuestionVC questionController.quizNumber = quizNum
做准备,但它不起作用
@Tameem 我认为这是因为它可能在 didselect 之前调用 segue 方法,所以在 didselect 本身中传递您想要的所有值。并删除转场
@Tameem Push 实际上已被弃用,我更喜欢你使用 show。以上是关于我想使用 didSelectRowAt 将数组从 UITableView 显示到下一个 viewController的主要内容,如果未能解决你的问题,请参考以下文章
用户在 didSelectRowAt 方法中选择原始数据后如何显示视图控制器 4 秒
Swift UITableView 仅在我按下几秒钟时调用 didSelectRowAt
TableView didSelectRowAt IndexPath 没有被调用
从@IBDesignable UIView didSelectRowAt UITableView 导航到 ViewController