ios - 如何在 segue 之前更新选定的行?

标签 ios swift tableview

我需要将一个包含一个 View 中所选行索引的变量传递到下一个 View 。

firstview.swift

var selectedRow = 0;

    override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        selectedRow = indexPath.row + 1
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if (segue.identifier == "viewAssignmentsSegue") {
            let navController = segue.destinationViewController as! UINavigationController
            let controller = navController.viewControllers[0] as! AssignmentsViewController
            print(selectedRow)
            controller.activeCourse = selectedRow
        }
    }

我的问题是,当选择一行时,selectedRow 变量在转场发生之前不会被 tableView 方法更新,这意味着该值本质上是总是落后于应有的水平。我怎样才能延迟prepareForSegue直到变量被更新或者我怎样才能成功地将选定的行传递到下一个 View 而不延迟?

最佳答案

一种可能性:不要实现 didSelectRowAtIndexPath:。只需将该功能移动到您的 prepareForSegue 实现中即可。毕竟,这就是响应您点击电池的第一个调用。即使在 prepareForSegue 中,您也可以询问 TableView 选择了哪一行。

另一种可能性:实现 willSelectRowAtIndexPath: 而不是 didSelectRowAtIndexPath:。它发生得更早。

关于ios - 如何在 segue 之前更新选定的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34109152/

相关文章:

ios - Swift:class does not implement methodSignatureForSelector: -- 前面有麻烦无法识别的选择器

swift - 如何在 Swift 3 中向图像添加文本?

arrays - 无论索引如何,检查两个数组中的元素是否相同

swift - 无法在 Swift 4 中为 WebKit View 创建 IBOutlet

java - 无法从 Soap 响应中的节点检索文本内容

c++ - Horizo​​ntalHeaderView 不调用 QAbstractTableModel 的 child 的 headerData()

ios - 似乎无法获取 AVPlayerLayer 的视频高度

ios - 如何解决错误 'No visible @interface for ' UIViewController' declares the selector ''

ios - Bool 值未发送到目标 ViewController

ios - 每个部分最后一行的可扩展表格 View 都有添加按钮 - Swift