认为没有为细节视图控制器设置值

时间:2015-03-02 01:02:02

标签: ios swift uiviewcontroller segue

我有一个Master-Detail VC设置,我已经找到了如何设置一个segue到我的Detail VC。下面的代码不会崩溃,但它也不会将标签的值发送给我正在推送的VC。

我很难理解如何将detailViewController.detailItem = selectedNote?.noteBody的值传递给DetailViewController

以下代码编译。它没有崩溃。但它也没有在DetailViewController上设置任何内容。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    // This is my object
    var selectedNote: Note?

    /*
    I do NOT want to use prepareForSegue. I have 2 diff't sets of notes I'm dealing with. One in 
    the managedObjectContext and the other is in filteredObjects array.
    */

    // This gets selectedNote from the fetchedResultsController
    if tableView == self.tableView {
        selectedNote = self.fetchedResultsController.objectAtIndexPath(indexPath) as? Note // <--this is "everything"
    } else {
        // This get a note from the filteredObjects array
        // This statement is necessary to unwrap the optional
        if let filteredObjects = filteredObjects {
            selectedNote = filteredObjects[indexPath.row]
        }
    }

    // Set up the detail view controller to show.
    let detailViewController = DetailViewController()

    // This is nil. I want to to set a value on the detailVC before I segue
    self.detailViewController!.detailItem = selectedNote?.noteBody

    // Note: Should not be necessary but current iOS 8.0 bug requires it.
    tableView.deselectRowAtIndexPath(tableView.indexPathForSelectedRow()!, animated: false)

    // this does the segue.
    navigationController?.pushViewController(detailViewController, animated: true)

}

我在这里很容易找到一些东西,但我无法理解。这是我的DetailViewController

import UIKit
import CoreData

class DetailViewController: UIViewController {

    @IBOutlet var detailDescriptionLabel: UILabel!

    var note: Note?

    var detailItem: AnyObject? = nil {
        didSet {
            // Update the view.
            self.configureView()
        }
    }
    func configureView() {
        // Update the user interface for the detail item.
        if let detail = self.detailItem as? Note {
            note = detail
            if let label = self.detailDescriptionLabel {
                label.text = detail.noteBody
            }
        }
    }


    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.
        self.configureView()
    }

这是我的Note课程:

class Note: NSManagedObject {

    @NSManaged var dateCreated: NSDate
    @NSManaged var dateEdited: NSDate
    @NSManaged var noteTitle: String
    @NSManaged var noteBody: String

}

0 个答案:

没有答案