• 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: How to set checkbox state in TableView columnheader
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How to set checkbox state in TableView columnheader


  • Subject: Re: How to set checkbox state in TableView columnheader
  • From: "Zhang Li" <email@hidden>
  • Date: Mon, 12 Oct 2009 14:51:51 +0800

Finally I made it! Again thanks to Jerry Krinock & Corbin Dunn. I've troubled by this issue for quite some days, and you saved me! =)

I'm not sure whether it's the most proper way to do it, but the code works, I can change title, change background color and change checkbox state by clicking it, and it's pretty simple & easy.

I post the code here in case other guys may have the same trouble some day in the future. And please correct me if anything wrong with my code.

//
//  checkboxHeaderCell.h
//

#import <Cocoa/Cocoa.h>


@interface CheckboxHeaderCell : NSButtonCell { NSButtonCell *cellCheckBox; NSColor *bkColor; }

-(void)setTitle:(NSString *)title;
-(void)setBkColor:(NSColor *)color;
-(BOOL)getState;
-(void)onClick;

@end


// // checkboxHeaderCell.m //

#import "CheckboxHeaderCell.h"


@implementation CheckboxHeaderCell

- (id)init
{
if (self = [super init])
{
 bkColor = nil;

 cellCheckBox = [[ NSButtonCell alloc] init];
 [cellCheckBox setTitle:@""];
 [cellCheckBox setButtonType:NSSwitchButton];
 [cellCheckBox setBordered:YES];
 [cellCheckBox setImagePosition:NSImageLeft];
 [cellCheckBox setAlignment:NSCenterTextAlignment];
 [cellCheckBox setObjectValue:[NSNumber numberWithInt:1]];

 [cellCheckBox setControlSize:NSMiniControlSize];
 [cellCheckBox setFont:[NSFont systemFontOfSize:[NSFont
           smallSystemFontSize]]];
}
return self;
}

- (void)dealloc
{
[cellCheckBox release];
[bkColor release];
[super dealloc];
}

-(void)setTitle:(NSString *)title
{
[cellCheckBox setTitle:title];
}

-(void)setBkColor:(NSColor *)color
{
[color retain];
[bkColor release];
bkColor = color;
}

-(BOOL)getState
{
return [[cellCheckBox objectValue] boolValue];
}

-(void)onClick
{
BOOL state = ![[cellCheckBox objectValue] boolValue];
[cellCheckBox setObjectValue:[NSNumber numberWithBool:state]];
}

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
if (bkColor != nil)
 [cellCheckBox setBackgroundColor:bkColor];

[cellCheckBox drawWithFrame:cellFrame inView:controlView] ;
}

@end

In the delegate of that tableView:

// Clicked on CheckBoxCell
- (void)tableView: (NSTableView *)tableView didClickTableColumn:(NSTableColumn *)tableColumn
{
CheckboxHeaderCell *headerCell = [tableColumn headerCell];
[headerCell onClick];
}




_______________________________________________

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: 
 >How to set checkbox state in TableView columnheader (From: "Zhang Li" <email@hidden>)
 >Re: How to set checkbox state in TableView columnheader (From: Corbin Dunn <email@hidden>)
 >Re: How to set checkbox state in TableView columnheader (From: Jerry Krinock <email@hidden>)
 >Re: How to set checkbox state in TableView columnheader (From: "Zhang Li" <email@hidden>)

  • Prev by Date: Re: Appropriate dealloc and finalize actions
  • Next by Date: Re: Where to send different messages while RunLoop is running
  • Previous by thread: Re: How to set checkbox state in TableView columnheader
  • Next by thread: Automatic language detection - a bug (again) or what. Snow Foundation NSSpellServer.
  • Index(es):
    • Date
    • Thread