• 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
View-based NSTableView question
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

View-based NSTableView question


  • Subject: View-based NSTableView question
  • From: TJ <email@hidden>
  • Date: Thu, 12 Jul 2012 00:06:11 +0200

Hey guys,

I'm trying to replace my old cell-based NSTableView system with the new 10.7+ view-based one without using Xcode's Interface Builder for the table view and column creation.
What I am doing now is creating an NSTableCellView inside NSTableView's delegate method [-NSTableView tableView:viewForTableColumn:row:]:

- (NSView *)tableView:(NSOutlineView *)aTableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
{
	NSString *identifier = [tableColumn identifier];
	NSString *stringValue = [self tableView:aTableView objectValueForTableColumn:tableColumn row:row];
	NSTableCellView *cellView = [aTableView makeViewWithIdentifier:identifier owner:self];
	if (cellView == nil)
	{
		// Create cell view
		cellView = [[[NSTableCellView alloc] initWithFrame:[cellView frame]] autorelease];
		cellView.identifier = identifier;
		// Create text field
		NSTextField *textField = [[[NSTextField alloc] initWithFrame:[cellView frame]] autorelease];
		[textField setIdentifier:identifier];
		[textField setBordered:NO];
		[textField setDrawsBackground:NO];
		[textField setStringValue: stringValue];
		cellView.textField = textField;
		[cellView addSubview:textField];
		return cellView:
	}

	[cellView.textField stringValue];
	return cellView;
}

The problem here is that I don't have any idea where and how to get and set the frame of the cell. As you can see during the creation of NSTableCellView I'm basically using an NSZeroRect because [cellView frame] is nil. I subclassed NSTableCellView and added a red color for the background in order to see if the NSZeroRect gets automatically updated to the current cell rect - it does work. But it just doesn't make sense to create a subview of NSTableCellView with a zero-frame... is there a method inside NSTableCellView I should subclass and position the NSTextField? Or is it common to get the frame inside -viewForTableColumn and adjusting the text field there? What's the way Apple had in mind concerning programmatically creating a view-based NSTableView? I couldn't find a lot of information on this, the demo video on developer.apple.com directly uses an NSTextField as the return cell-view but my view needs to be more complex than that. I am pretty sure I just missed something very important here. ;-) And my second question is - is it possible to create a cell view which is bigger than one row, thus it's overlaying other rows (I'm not customizing my table view to death, I have a good reason for cell views being positioned over several rows).

Thank you very much in advance!
_______________________________________________

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


  • Follow-Ups:
    • Re: View-based NSTableView question
      • From: Quincey Morris <email@hidden>
    • Re: View-based NSTableView question
      • From: Laurent Daudelin <email@hidden>
    • Re: View-based NSTableView question
      • From: Chuck Soper <email@hidden>
  • Prev by Date: Re: How to implement an object whose properties are really dictionary entries.
  • Next by Date: Re: View-based NSTableView question
  • Previous by thread: Re: Custom Reuse Queue
  • Next by thread: Re: View-based NSTableView question
  • Index(es):
    • Date
    • Thread