在没有segue的表视图之间传输数据?

时间:2016-09-20 01:28:58

标签: ios swift tableview

我是否必须使用segue在表视图控制器之间传输数据? 我在editActionsForRowAtIndexPath方法中编写了三个动作,我希望其中两个可以将数据传输到另一个表视图控制器(同时从原始表视图控制器中删除)而不使用segue,这是否可能?因为我看到的所有答案都是关于segue的?

如果有人能给我一个提示,我感激不尽,我被困在这里,只是暗示对我来说已经足够了!

提前致谢。

我的代码如下:

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
    let moveAction = UITableViewRowAction(style: .Default, title: "Move") { (action, indexPath) in
    let moveMenu = UIAlertController(title: nil, message: "Move to", preferredStyle: .ActionSheet)

        // I need to write two handler to handle the movements
        let cancelationAction = UIAlertAction(title: "Move to Cancelation List", style: .Default, handler: moveToCancelation)
        let achievementAction = UIAlertAction(title: "Move to Achievement List", style: .Default, handler: moveToAchievement)
        let cancel = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)
        moveMenu.addAction(cancelationAction)
        moveMenu.addAction(achievementAction)
        moveMenu.addAction(cancel)
        self.presentViewController(moveMenu, animated: true, completion: nil)
    }

    let deleteAction = UITableViewRowAction(style: .Default, title: "Delete") { (action, indexPath) in
        // delete items from data source
        self.wishList.removeAtIndex(indexPath.row)
        self.saveWishList()
        self.tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
    }

    moveAction.backgroundColor = UIColor.lightGrayColor()
    deleteAction.backgroundColor = UIColor.redColor()

    return [moveAction, deleteAction]
}

2 个答案:

答案 0 :(得分:2)

其他答案用segues讨论这个问题,因为通常最容易使用故事板来显示场景之间的交互,而segues则封装了这些交互。如果您在代码中完成所有操作,正如您的示例所示,则segues毫无意义。相反,您可以手动设置目标视图控制器上的属性。

答案 1 :(得分:0)

一周过去了,我已经实现了我想要的东西。 问题是,是的,我们需要segue,在此之前,我只是认为我只能将segue从实际按钮或其他东西转移到另一个视图,但实际上,我可以从视图控制器到另一个视图控制器创建一个segue指定哪个元素激活segue。这就是我做的, 在两个视图控制器之间创建一个segue,然后在上面命名segue,write handler,然后用特定的标识符执行segue。 我希望它可以帮助任何不熟悉的人。

我的新代码是下流式的:

"GeneralModel": {
    "Language" : "english"
},
"AnoherClassName": {
    "ClassProperty" : value
}