Alastair Hi. Yes, sorry I didn't think properly when typing, NSCell is not a view, and unfortunately Cocoa doesn't offer the option as UIKit to drag in IB a ("NSTableCell"), and just put all the controls there, then set the Identifier to reuse, configure the cell and return the cell, in the delegate method... :(
So checking some examples, if I want to place some view in a cell I must pass to the custom cell a weak reference of the view, then in the draWithRect method add the view to the controlView?.. interesting.. I was drawing attributed strings instead.. but now i need to support selection of that text. I will give it a try then. Thx G. On Jun 10, 2010, at 11:12 AM, Alastair Houghton wrote: > On 10 Jun 2010, at 08:37, Gustavo Pizano wrote: > >> Well I have created custom table view cells in the way that I create my >> subclass of NSCell, and then in the -(void)drawWithFrame:(NSRect)cellFrame >> inView:(NSView *)controlView method I make the drawing. >> >> now i wonder if I can do it the iPHone way, create a xib with a NSCell view, >> place the other views I need in the cell, and in the delegate of the >> NSTableView method. - (NSCell *)tableView:(NSTableView *)tableView >> dataCellForTableColumn:(NSTableColumn *)tableColumnrow:(NSInteger)row return >> an instance of my custom cell . > > No. Or rather, you *could*, but you'd have to make a special NSCell that > loaded the xib file, added all the views as subviews of the table view (in > appropriate places) and conspired somehow to manage the set of views so that > you didn't just end up adding/creating more and more views as the user > scrolls around. > > The root of the problem is that NSCell is not a view, and moreover the table > view may use the same cell over and over when drawing its rows. > >> Now what implications will this have if I using core data?, I will have an >> NSArryaController as the dataSource for the table view, so my guess is that >> when returning the cell instance, I must get the object from the >> arrangedObject array of the NSArryaController at the given row. >> >> am I right, wrong? what else am I missing? > > Wrong. NSCell is not a view. There is not one NSCell per table "cell"; > generally speaking, NSCells are re-used, and so the data is set before > drawing using -setObjectValue: or similar. > > If you do need views in a table view (e.g. because you want a progress > indicator, or you want to do mouse tracking or something), there are plenty > of examples: > > <http://www.google.co.uk/search?hl=en&source=hp&q=nsview+in+nstableview> > > For many applications, though, this is unnecessary and you should just use > appropriate NSCell instances; if the provided NSCells and NSFormatters aren't > sufficient for you, it's usually possible to write a custom NSCell that draws > whatever it is you need. > > Kind regards, > > Alastair. > > -- > http://alastairs-place.net > > > _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) 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: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com