繁体   English   中英

获取tableView单元格数据的详细视图

[英]getting a detail view of tableView cell data

我是新手,我想弄清楚的是如何从表视图中使细节视图控制器成为现实。 现在,我已经设置了segue(带有“ showDetails”标识符)以打开详细视图控制器。 这是我要从中选择的表视图控制器中的代码,只是不确定我是否在正确执行此操作。 任何帮助,将不胜感激!

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {

    //Core Data
    let appDelegate = UIApplication.sharedApplication().delegate as AppDelegate
    let managedContext : NSManagedObjectContext = appDelegate.managedObjectContext!
    var fetchRequest = NSFetchRequest(entityName: "Log")
    fetchRequest.returnsObjectsAsFaults = false;
    var results: NSArray = managedContext.executeFetchRequest(fetchRequest, error: nil)!


    var totalHoursWorkedSum: Double = 0
    var logsArray = [String]()

    for res in results {
        var totalWorkTimeInHours = res.valueForKey("totalWorkTimeInHours") as Double
        var dateString = res.valueForKey("dateString") as String
        var comments = res.valueForKey("comments") as String



        var loggedTotalWorkTimeInHours = "\(totalWorkTimeInHours)"
        var loggedDateString = "\(dateString)"
        var loggedComments = "\(comments)"

        let destinationVC = segue.destinationViewController as LogDetailTableViewController
        destinationVC.logTimeTextField.text = loggedTotalWorkTimeInHours
        destinationVC.logDateTextField.text = loggedDateString
        destinationVC.commentsTextField.text = loggedComments

    }
}

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {


    let selectedLog: AnyObject = loggedTimes[indexPath.row]


    let destinationVC = LogDetailTableViewController()
    destinationVC.logTimeTextField = selectedLog as UITextField
    destinationVC.logDateTextField = selectedLog as UITextField
    destinationVC.commentsTextField = selectedLog as UITextField

    destinationVC.performSegueWithIdentifier("showDetails", sender: self)
}

不确定该怎么做,当我尝试点击tableview单元以尝试显示详细信息时,我总是崩溃。

您的代码有几个问题。 首先,使用segues,您无需创建目标视图控制器-它是为您创建的。 您应该删除didSelectRowAtIndexPath中创建您的详细信息视图控制器的行,因为不会隐瞒该行。

其次,取决于您如何从表视图控制器连接segue,您可能需要调用performSegueWithIdentifier。

在情节提要中连接序列的一种常见方法是从原型单元到详细视图控制器。 通过这种方法,当用户点击单元格时会自动触发segue。 您不需要显式调用performSegueWithIdentifier。

另一方面,如果将segue从表视图控制器连接到详细信息视图控制器,则需要调用它。

无论哪种情况,您都需要从选定的单元格中获取相关信息,以传递给prepareForSegue中的详细信息视图控制器。 我使用的一种技术是将对单元格数据(您的selectedTime)的引用保存在类级别的属性中,然后通过我在其上定义的属性将其发送到目标视图控制器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM