In my app I\'m trying to create a custom cell like the follow:
I know
In your xib, select your custom cell you want to connect, and go to the Identity Inspector in the Utilities area on the right panel (https://developer.apple.com/library/ios/recipes/xcode_help-general/Chapters/AbouttheUtilityArea.html). Change the class to be of type CustomCell. Then you should be able to connect it to an outlet
Apple is discouraging the use of NSCell subclasses as of Lion. You can now do a NSView based NSTableView, which is much more flexible.
I've done them by creating NSViews in the dataSource methods but here's a decent tute on doing it with a nib.
see apple docs too.
Drag the NSTextFields and ImageViews into the TableCellview as needed. By default, NSTableCellview supports 1 Imageview and 1 Textfield. If you need two of each, inherit NSTableCellview and create IBOutlet properties for your components and change the class of NSTableCellview in IB to InheritedTableCellview.
@interface InheritedTableCellview : NSTableCellView
@property (assign) IBOutlet NSTextField *secondTextField;
@property (assign) IBOutlet NSImageView *secondImageView;
@end
@implementation SRITableCellView
@end
Name the identifier of TableCellview with unique string.
In the view controller, implement the below datasource method for display the number of rows required.
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
return self.tableArray.count;
}
Implement the delegate method to set the image and Text for each row,
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
InheritedTableCellview *cellView = [tableView makeViewWithIdentifier:@"MainCell" owner:self];
cellView.backgroundStyle = NSBackgroundStyleDark;
cellView.textField.stringValue = self.tableArray[row][@"textValue1"];
cellView.imageView.image = [NSImage imageNamed:self.tableArray[row][@"image1"]];
cellView.secondTextField.stringValue = self.tableArray[row][@"textValue2"];
cellView.secondImageView.image = [NSImage imageNamed:self.tableArray[row][@"image2"]];
return cellView;
}