ios - 如何将数据从一个表格 View 单元格传输到另一个表格 View 单元格?

标签 ios swift uitableview

我正在尝试创建一个收藏夹页面。如何让用户点击一个 TableView 中的图像,然后将他们点击的 TableView 中的数据传输到另一个页面中的另一个 TableView ?

@IBAction func favoritesSelected(sender: AnyObject)
{
    if toggleState == 1
    {
        sender.setImage(UIImage(named:"Star Filled-32.png"),forState:UIControlState.Normal)
        isFav = true

        var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
        var context:NSManagedObjectContext = appDel.managedObjectContext

        var newFave = NSEntityDescription.insertNewObjectForEntityForName("Favorites", inManagedObjectContext: context) as NSManagedObject
        newFave.setValue("" + nameLabel.text!, forKey: "favorite")

        do
        {
            try context.save()
        }
        catch _
        {
            print("error")
        }

        //print("\(newFave)")
        print("Object saved")

        toggleState = 2
    }

从上面的代码中,您可以看到当用户单击收藏夹按钮时会发生什么。图像发生变化并将名称上传到核心数据。

我试图让它转到另一个 TableView 单元格类,这样当它到达收藏夹页面时,收藏的名字已经在那里。

我会展示我在那堂课上的东西,但我确定它是错误的。

if (result == 2)
    {
        var appDel:AppDelegate = (UIApplication.sharedApplication().delegate as! AppDelegate)
        var context:NSManagedObjectContext = appDel.managedObjectContext

        var request = NSFetchRequest(entityName: "Favorites")
        request.returnsObjectsAsFaults = false

        do 
        {
            var results:NSArray = try context.executeFetchRequest(request)

            if (results.count <= 0)
            {
                print("Either all object deleted or error")
            }
        }
        catch _
        {
            print("error")
        }


    }
    else
    {
        print("no show")
    }

最佳答案

选项 1:NSNotification 触发 tableView 重新加载:

用通知注册 UITableView tableView:

NSNotificationCenter.defaultCenter().addObserver(self, selector: "contextDidSave:", name: NSManagedObjectContextDidSaveNotification, object: nil)

func contextDidSave(sender: NSNotification) {
    tableView.reloadData()
}

在第一个例子中用户点击星标并且正确保存上下文后,contextDidSave 回调将被执行,tableView 将加载最新状态在数据库中

选项 2:使用 NSFetchedResultsController 设置 UITableView

有了这个选项,一旦用户点击星标并保存上下文,iOS 将自动触发对选定单元格的更新。引用这篇文章:

https://developer.apple.com/library/ios/documentation/CoreData/Reference/NSFetchedResultsController_Class/

关于ios - 如何将数据从一个表格 View 单元格传输到另一个表格 View 单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36972382/

相关文章:

iphone - iTunes 连接 : "Too few reports have been submitted for a report to be shown"

ios - 尺寸检查器的自动调整大小蒙版中的支柱和 Spring 似乎在 iOS5 模拟器中不起作用

ios - 如何在 objective c 中使用 swift 文件

swift - Swift 中的一步对象创建和属性初始化?

swift - 两个部分和不同的三个单元

ios - 强制 iOS 不使用 AGPS

ios - 在 CCRenderTexture 中绘制抗锯齿圆

ios - Firebase 查询/TableView 问题

ios - UITableViewCell 子类导致无法识别的选择器发送问题

ios - UITableViewCell 中的 UICollectionView 如何根据屏幕尺寸调整 tableview 单元格高度