Hi,   I'm trying to expand on "Styling an NSTableView" at katidev.com in a
test app of mine. The modification that I have made is that in my subclass
of NSCell, I have included a new NSImage data element

@interface CustomCell : NSCell {

NSImage *image;

}

@end

   In my appController, I set the tableView to use this cell

CustomCell *cell = [[CustomCell alloc] init];

[[tableView tableColumnWithIdentifier:@"Cities"] setDataCell:cell];

[cell release];


and I set the image for the cell in my implementation of


 -(void) tableView:(NSTableView*) aTableView

  willDisplayCell:(id) aCell

   forTableColumn:(NSTableColumn *) aTableColumn

  row:(int) rowIndex


When I run the program, it displays the image fine. However, when I click on
the table row's it crashes. I see that it is deallocing my cell (via an
NSLog()) in the CustomCell's dealloc method. So, I guess it is crashing as
the cell is being dealloced, and then in willDisplayCell, it is trying to
set the image.


I tried setting aCell in the willDisplayCell method to a newly allocated
instance of CustomCell and also tried doing the setDataCell method with that
new instance. It still crashes...should I be initializing the cell someplace
else?

Reading the documentation it seems that a single cell is used for all rows
of the table Column. So, I'm guessing when the application launches it is
using my initialized customCell for all rows and displaying it without
deallocing it. However, when I click a row, it deallocs and tries to do the
same again.

Any pointers on if and when I should be giving the tableView a newly
allocated instance of the cell? Thanks



George
_______________________________________________

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

Reply via email to