【问题标题】:Carrying on data from a UITableView cell to another VC's tableview? (Swift)将数据从 UITableView 单元格传输到另一个 VC 的 tableview? (迅速)
【发布时间】:2015-01-26 11:34:24
【问题描述】:

我目前正在快速开发一个项目,在该项目中我创建了一个具有 UITableView 的 ViewController。

http://prntscr.com/5wft7u

这个 UITableView 你可以滑动删除。我想在我的另一个视图上制作“已删除项目”或“回收站”部分之类的东西,一旦按下删除按钮,它就会从第一个 tableView 中删除,现在插入到“已删除项目”视图 tableview 单元格中.

*编辑:

我一直在想,我会为回收物品制作另一个数组。在用于删除项目的 UITableViewRowAction 处理程序中,从项目数组中删除某些内容后,将其添加到回收的数组中。然后在 prepareForSegue 方法中将该回收的数组传递给另一个 VC,另一个 VC 将该数组加载到表中。

我也无法正常工作.. 有人可以给我看看代码吗?

第一次查看代码:pastebin.com/dBucJ9w0 查看:prntscr.com/5wft7u

第二个视图代码只是一个默认的 VC 类。 第二类的视图只是一个 TableView。

谢谢。

【问题讨论】:

    标签: ios swift


    【解决方案1】:

    为每个 ViewController 添加另一个数组。 第一个VC: 在您的 projects 声明之后添加 var deleted: [String] = []。然后这样做:

    func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
        if editingStyle == UITableViewCellEditingStyle.Delete {
            deleted.append(projects[indexPath.row])
            projects.removeAtIndex(indexPath.row)
            tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)
        }
    }
    

    最后制作一个prepareForSegue函数来传递数据:

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "YourIdentifier" {
            let destination = segue.destinationViewController as YourSecondViewControllerClass
            destination.arrayThatYouAdded = deleted
       }
    }
    

    然后在您的第二个视图控制器中显示arrayThatYouAdded 属性,但是您希望在表格视图中显示。

    【讨论】:

    • 嘿,我一直在搞乱代码,按照你说的做了。我想知道,在我的第一个 VC 中,我有一个可以更改视图并添加 UITableRowAction 的处理程序。其中一个是“删除”,所以我认为第一个功能(commitEditingstyle)不是必需的?我必须将它添加到我的处理程序中还是保持原样。如果我保持原样,它仍然没有将它添加到表中..所以这就是为什么它让我这么想。干杯
    • 啊,我现在看到您正在手动添加删除按钮?如果是这样,您实际上不需要重写commitEditingStyle,您只需在删除按钮的处理程序中实现删除代码即可。然而,这是一种实现删除的时髦方式,但我认为它应该可以工作。
    • 那么如何在处理程序中实现删除代码呢?我不太明白你在说什么?
    • 哦,是的,您的意思是添加 deleted.append(projects[indexPath.row]) 到删除操作行部分,我试过了,但它一直提示我包括 self.deleted.append(self.projects[indexPath.row]) 并且当我运行它时它说数组超出范围。我会把它放在代码的什么地方? ^^ 在 - self.tableView.dataSource?.tableView?(self.tableView, commitEditingStyle: .Delete, forRowAtIndexPath: indexPath) 之后 - 但在 'return'
    • 除非我的第四个VC搞砸了|第四VC - pastebin.com/PME6YGcD
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-03
    • 2020-03-15
    • 2021-09-22
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多