我创建了一个在表格视图中显示10个随机数的应用。这是我用的代码
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 10
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ShowNumber", for: indexPath)
// Configure the cell...
cell.textLabel?.text = "\(indexPath.row + 1): \(Int(arc4random_uniform(10001)))"
return cell
}
现在我想能够点击一个单元格并被带到另一个视图控制器,并在页面中央显示随机数。我将视图控制器全部设置并链接到原始表视图。我在通过segue传递数据时遇到了麻烦。这就是我到目前为止所拥有的。我知道它未完成,我只是不知道该怎么做。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showRandomNumber" {
let controller = segue.destination as! ShowNumberTableViewController
let selectedRow = (tableView.indexPathForSelectedRow as NSIndexPath?)?.row ?? 0
controller.LabelText =
}
LabelText是我想要传递数据的标签的名称,但我不知道如何
答案 0 :(得分:1)
使用indexPathForSelectedRow
,您可以获得对触发segue的单元格的引用。然后,您可以访问该单元格中的textLabel,获取其值,并将其传递给下一个视图控制器。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showRandomNumber" {
let controller = segue.destination as! ShowNumberTableViewController
if let indexPath = tableView.indexPathForSelectedRow {
let cell = tableView.cellForRowAtIndexPath(indexPath) as UITableViewCell
if let textToPass = cell.textLabel.text {
controller.labelText = textToPass
}
}
}
}
然后在ShowNumberTableViewController
中你需要一个var labelText
,在你的viewDidLoad()
中你可以用
centerLabel.text = labelText
答案 1 :(得分:0)
您正在进行操作时,滚动表格视图时数字会发生变化。我认为你应该将数字保存在一个数组中。
关于如何抓取prepareForSegue:
中所选的号码,我会这样做:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "showRandomNumber" {
if let cell = sender as? UITableViewCell, indexPath = tableView.indexPathForCell(cell) {
let selectedNumber = numbers[indexPath.row]
controller.labelText = String(selectedNumber)
}
}
}