我正在尝试创建一个收藏夹页面。如何让用户点击一个 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 将自动触发对选定单元格的更新。引用这篇文章:
关于ios - 如何将数据从一个表格 View 单元格传输到另一个表格 View 单元格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36972382/