• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: NSOutlineView
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSOutlineView


  • Subject: Re: NSOutlineView
  • From: Charles Jenkins <email@hidden>
  • Date: Tue, 09 Sep 2014 20:36:03 -0400

Quincey,

Thanks for the reply.

At the time of my original posting I had verified several times that all the protocol functions got called and were returning the values I expected them to return. The objectValueForTableColumn one was returning a String, the title I hoped would appear in the outline.

Following Ken’s advice, I changed that method to return the node itself, not its title, and tried changing a binding to read the title. It appears messing with the bindings perturbed the system somehow: now the objectValueForTableColumn method doesn’t seem to ever get called. The protocol has four methods, and the other three still do get called and return the values I expect.

That’s a long answer to your question about whether the method ever gets called. In summary: it was once called and returned a good String value; now it would return a good DocumentNode object from which the String title could be retrieved, but it isn’t called for some reason; and either way, there’s no visible difference in the running app. I still get a fully populated document tree where each node’s title is blank.

Here is my Document object’s current code. For brevity I have cut out the boilerplate methods generated by Xcode and not yet modified by me.

import Cocoa

class Document: NSDocument, NSOutlineViewDataSource {

  @IBOutlet weak var theOutlineView: NSOutlineView!

  var theProject: DocumentNode

  override init() {
    // Swift requires local properties to be initialized first
    theProject = DocumentNode.CreateSampleProject()
    super.init()
  }

  func getDocumentNodeFrom( obj: AnyObject! ) -> DocumentNode {
    if let node = obj as? DocumentNode {
      return node
    } else {
      return self.theProject
    }
  }

  func outlineView(
    nsov: NSOutlineView!,
    child index: Int,
    ofItem item: AnyObject!
  ) -> AnyObject!
  {
    let node = getDocumentNodeFrom( item )
    let result = node.children[ index ]
    return result
  }

  func outlineView(
    nsov: NSOutlineView!,
    isItemExpandable item: AnyObject!
  ) -> Bool
  {
    let count = outlineView( nsov, numberOfChildrenOfItem: item )
    let result = count > 0
    return result
  }

  func outlineView(
    nsov: NSOutlineView!,
    numberOfChildrenOfItem item: AnyObject!
  ) -> Int
  {
    let node = getDocumentNodeFrom( item )
    let result = node.children.count
    return result
  }

  func outlineView(
    nsov: NSOutlineView!,
    objectValueForTableColumn tableColumn: NSTableColumn!,
    byItem item: AnyObject!
  ) -> AnyObject!
  {
    let node = getDocumentNodeFrom( item )
    return node
  }

}


—

Charles Jenkins


On Tuesday, September 9, 2014 at 15:28, Quincey Morris wrote:

> Actually, I was wrong. Because the protocol has the underscore (followed by a space to separate it from the parameter name), it doesn’t matter what you use for your parameter name in your declaration — _outlineView, outlineView and xxx would all have been fine.
>
> However, your solution to the problem (the warning message, that is) was pretty lousy. It wasn’t the space that was extraneous, it was the underscore, and the natural solution would be to remove the underscore. (That is, unless you *like* having variable name start with an underscore.)
>
> Back to the original problem, assuming you haven’t already found what’s wrong:
>
> You need to approach this systematically. Is the method called at all? Does ‘getDocumentNodeFrom’ return a non-nil value? What is the actual value of the ‘title’ property?
>
>

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


References: 
 >NSOutlineView (From: Charles Jenkins <email@hidden>)
 >Re: NSOutlineView (From: Ken Thomases <email@hidden>)
 >Re: NSOutlineView (From: Charles Jenkins <email@hidden>)
 >Re: NSOutlineView (From: Quincey Morris <email@hidden>)
 >Re: NSOutlineView (From: Charles Jenkins <email@hidden>)
 >Re: NSOutlineView (From: Quincey Morris <email@hidden>)

  • Prev by Date: Re: How to copy Color Panel behaviour?
  • Next by Date: Crash presenting modal built with Xcode 6 GM
  • Previous by thread: Re: NSOutlineView
  • Next by thread: Re: NSOutlineView
  • Index(es):
    • Date
    • Thread