I need to make a Cocoa radio button programatically, can anyone explain how this might be done or post a good link that shows how to do this well.
问题:
回答1:
Here's a sample code for creating radio buttons programatically:
//create the radio button prototype NSButtonCell *proto = [[NSButtonCell alloc] init]; [proto setTitle:@"Options"]; [proto setButtonType: NSRadioButton]; //define the matrix size where you'll put the radio buttons NSRect matrixRect = NSMakeRect(20.0,20.0,125.0,125.0); //define the matrix specifying that it will contain radio buttons of //prototype "proto" defined above, and that it will have 3 radio buttons //arranged on 1 column NSMatrix *matrix = [[NSMatrix alloc] initWithRect: matrixRect mode: NSRadioModeMatrix prototype: (NSCell *)proto numberOfRows:3 numberOfColumns:1]; //this assumes that you connected the window object to an outlet [[windowOutlet contentView] addSubview: matrix]; //set the radio buttons' titles by getting references to the matrix's cells NSArray *cells = [matrix cells]; [[cells objectAtIndex:0] setTitle:@"Option 1"]; [[cells objectAtIndex:1] setTitle:@"Option 2"]; [[cells objectAtIndex:2] setTitle:@"Option 3"]; [proto release]; [matrix release];
Have fun! Yes, this is taken from here, but i added some personal comments to explain the process.
回答2:
Taken from here:
Radio buttons are in fact a matrix if button cells. The exclusive selectivity is a property of the matrix.
To programmatically create a matrix of button cells you do exactly the same operations programmatically that IB does as the result of your input. e.g. Create an NSMatrix instance, set its cell prototype to an NSButtonCell, set that attributes of the matrix via its public methods (the same ones IB uses), and set the attributes of the prototype button cell and or all of the contained button cells.
Also see this link for more sample code on how to make an NSMatrix programatically.
回答3:
The NSButton Class reference is here
Button programming topics, specifically Radio Button (with sample code) can be found here