O'Reilly logo

Beginning Mac OS® X Programming by Drew McCormack, Michael Trent

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

8.8. Working with Table Views

Tables are widely used in Mac OS X applications for displaying lists of information. You can see examples of it everywhere, from a list of messages displayed in Mail, to lists of files and build errors in Xcode. Table views often present information in multiple columns, with each column name appearing in the column's header. Columns and rows sometimes can be reordered within the table. AppKit supplies a single class that can be used in all of these situations: NSTableView.

The NSTableView class works with data in a different manner than other Cocoa controls. The controls you've seen so far, including text fields, text views, and image views, all use simple accessor methods to get and set the control's value. NSTableView does not store your list data itself; instead, it asks for your data on demand from another object, which NSTableView calls its data source. An NSTableView data source is an Objective-C object, perhaps simply an NSObject subclass that implements a special collection of methods, called a protocol. The NSTableView data source protocol specifies the methods used by the table view to get your object data. These are especially important when working with NSTableView objects directly, through Interface Builder outlets and actions.

You can also supply NSTableView data through Cocoa Bindings, using an NSArrayController to manage the list of your modal data. In this case, the table view will use the Key Value Coding mechanism to find your list ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required