Swift中的didSelectRowAtIndexPath和prepareForSegue

3

我需要在prepareForSegue中为选定的行添加一个值,以便它执行其操作。但是我的prepareForSegue在执行其操作之前执行了操作。当我尝试放置“performSegueWithIdentifier”时,它会崩溃。我已在故事板中将id添加到segue idenfifier中。我正在使用sqlite。

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


override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if(segue.identifier == "editSegue")
    {
        let viewController : WorkoutView = segue.destinationViewController as! WorkoutView
        viewController.workoutInfoData = marrStudentData.objectAtIndex(selectedRow) as! WorkoutInfo
        navigationItem.title = ""
    }
}

你收到了什么错误? - Chathuranga Silva
当我在故事板中删除标识符并添加performSegueWithIdentifier时,我得到了... - user3910594
2015-10-24 17:53:41.331 MMA Spartan System Free[660:219419] ***由于未捕获的异常 'NSInvalidArgumentException',原因:'接收器(<MMA_Spartan_System_Free.WorkoutsMenuView: 0x145567980>)没有标识符为'editSegue'的segue' ***第一次抛出调用堆栈: (0x1828d8f48 0x19748bf80 0x1881dcbc4 0x1000d6778 0x1000d6808 0x187fa231c 0x18805ff8c 0x18811c56c 0x1881294bc 0x187e5d984 0x18288fbd0 0x18288d974 0x18288dda4 0x1827bcca0 0x18d9f8088 0x187ed4ffc 0x1000b7228 0x197cda8b8) libc++abi.dylib:以NSException类型终止未捕获的异常 - user3910594
没有与标识符“editSegue”相对应的segue。因此,您应该给segue一个类似于“editSegue”的名称来解决这个错误!! - Chathuranga Silva
1个回答

4

在 segue 的准备过程中,您可以从 tableView 中获取所选的 indexPaths。

    func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if(segue.identifier == "editSegue")
        {
            if let indexPath = tableView.indexPathForSelectedRow{
                let viewController : WorkoutView = segue.destinationViewController as! WorkoutView
                viewController.workoutInfoData = marrStudentData.objectAtIndex(indexPath.row) as! WorkoutInfo
                navigationItem.title = ""
            }
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接