0

普段はゲームを作っているので、テーブルにはあま​​り詳しくありませんが、カスタム セルを含むテーブル ビューが必要なレベル ビルダーを作成したいと考えています。nib ファイルを作成し、NSTableCellView をサブクラス化しましたが、次に何をすればよいかわかりません。私が持っているのは次のとおりです。

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
    NSScrollView * tableContainer = [[NSScrollView alloc] initWithFrame:NSMakeRect(self.window.frame.size.width-TABLEWIDTH, 0, TABLEWIDTH, self.window.frame.size.height)];
    SpriteTable *sT = [[SpriteTable alloc]initWithFrame:NSMakeRect(self.window.frame.size.width-TABLEWIDTH, 0, TABLEWIDTH, self.window.frame.size.height)];
    NSTableView *tableView = [[NSTableView alloc] initWithFrame: sT.bounds];

    NSTableColumn*  firstColumn = [[[NSTableColumn alloc] initWithIdentifier:@"firstColumn"] autorelease];
    [[firstColumn headerCell] setStringValue:@"First Column"];
    [tableView  addTableColumn:firstColumn];

    tableView.dataSource = self;
    tableView.delegate = self;
    [tableContainer setDocumentView:tableView];
    tableContainer.autoresizingMask = NSViewHeightSizable | NSViewMinXMargin;
    [self.window.contentView addSubview: tableContainer];


}


- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView{

    return 4;
}



- (NSView *)tableView:(NSTableView *)tableView
   viewForTableColumn:(NSTableColumn *)tableColumn
                  row:(NSInteger)row {

    // get an existing cell with the MyView identifier if it exists
    CustomCell *result = [tableView makeViewWithIdentifier:@"MyView" owner:self];


    // There is no existing cell to reuse so we will create a new one
    if (result == nil) {
        NSLog(@"result = nil");

        // create the new NSTextField with a frame of the {0,0} with the width of the table
        // note that the height of the frame is not really relevant, the row-height will modify the height
        // the new text field is then returned as an autoreleased object
        //result = [[[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 250, 70)] autorelease];

        // the identifier of the NSTextField instance is set to MyView. This
        // allows it to be re-used
        result.identifier = @"MyView";
    }

    // result is now guaranteed to be valid, either as a re-used cell
    // or as a new cell, so set the stringValue of the cell to the
    // nameArray value at row

    result.imageView.image = [NSImage imageNamed:NSImageNameHomeTemplate];

    // return the result.
    return result;

}

もしあれば、どのデリゲートメソッドを実装する必要がありますか? また、nib ファイルを使用してセルをカスタマイズするにはどうすればよいですか?

4

1 に答える 1

0

urサブビューでこれを行います->

@implementation suhasView 
@synthesize name,containerView;// container view contains ur subview
- (NSView*) myView 
{
  NSBundle *bundle = [NSBundle bundleForClass:[self class]];
  NSNib *theNib = [[NSNib alloc] initWithNibNamed:@"suhas"bundle:bundle];
 [theNib instantiateNibWithOwner:self topLevelObjects:nil];
 return containerView;
}

コントローラ->

- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn   *)tableColumn row:(NSInteger)row 
{ 
suhas *a=[[suhas alloc]initWithFrame:NSMakeRect(0,0, 40, 40)];
NSView * v = [a myView]; 
[a.name setStringValue:@"suhas"];
return v;
}...//sorry for my naming of the class:)  
于 2012-10-10T08:01:16.297 に答える