首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将核心数据信息从表视图传递到视图控制器?

如何将核心数据信息从表视图传递到视图控制器?
EN

Stack Overflow用户
提问于 2015-01-14 01:16:49
回答 2查看 1.9K关注 0票数 1

我的应用程序有一个显示项目简要数据的UITableView,当用户按下一个单元格时,我会尝试将用户发送到另一个viewController。该viewController名为detailViewController,我希望它能显示有关所选单元格的更多详细信息。我使用的是核心数据,我的问题就出在这里。我不知道如何将一个存储在cordite中的特定对象传递给另一个视图控制器。下面是我的代码:

代码语言:javascript
复制
var tasks: Array<AnyObject> = [] //Creating an array that will store fetched data

override func viewWillAppear(animated: Bool) {

let appDel: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate
let contexts: NSManagedObjectContext = appDel.managedObjectContext!
let fetchreq = NSFetchRequest(entityName: "toDo")

tasks = contexts.executeFetchRequest(fetchreq, error: nil)!
tableView.reloadData()

}

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {


let CellID: NSString = "myCell"

var cell: CustomCell = tableView.dequeueReusableCellWithIdentifier(CellID) as CustomCell

if let indexpth = indexPath as NSIndexPath! {

    var data: NSManagedObject = tasks[indexpth.row] as NSManagedObject
    cell.theTextLabel?.text = data.valueForKeyPath("toDoName") as? String

    cell.theDetailTextLabel?.text = data.valueForKeyPath("toDoNumber") as? String

}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    // Get the new view controller using [segue destinationViewController].
    // Pass the selected object to the new view controller.

    if segue.identifier == "showDetail" {

        var detailVC: DetailViewController = segue.destinationViewController as DetailViewController

        var index: NSIndexPath = self.tableView.indexPathForSelectedRow()!
        var row: NSInteger = index.row

        var myData: NSManagedObject = tasks[row] as NSManagedObject

        var tName: AnyObject? = testData.valueForKeyPath("tName")
        detailVC.detailTasks = myData
        detailVC.detailName = tName

    }

}

我不确定如何将存储在核心数据中的对象传递给另一个视图控制器,我尝试了很多方法,但似乎都不起作用。谢谢你们!

EN

回答 2

Stack Overflow用户

发布于 2015-01-14 23:50:12

在尝试了一些东西之后,我解决了我的问题,下面的代码对我来说是有效的。在我的DetailViewController中,我将标签更改为文本字段以显示信息。我创建了一个string类型的变量detailName,并将我的数据放在there.Thanks中,以帮助你们!

代码语言:javascript
复制
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {


    if segue.identifier == "showDetail" {

        var detailVC: DetailViewController = segue.destinationViewController as DetailViewController

        var selectedItem: NSManagedObject = tasks[self.tableView.indexPathForSelectedRow()!.row] as NSManagedObject

        detailVC.detailName = selectedItem.valueForKey("tName") as String

    }
票数 2
EN

Stack Overflow用户

发布于 2015-01-14 02:02:00

在传递任何数据之前,请检查以确保您的detailVC已被分配和初始化。我猜这就是问题所在。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27927779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档