我非常困惑,因爲NstableView中的多NsProgressIndicators無法正常工作,addSubview方法總是將進度單元添加到tableview中的最後一行,而不是完全爲 行索引我想,這裏有一些簡單的代碼:添加NsProgressIndicator到NstableView中的特殊行
的NSTableView的數據源有兩個成員:
@interface tableModel : NSObject {
NSString *name;
NsProgressIndicator *progressobj;
}
@property(retain) NSString* name;
@property(retain) NsProgressIndicator *progressobj;
而且我寫了一個自定義單元格類: 「ProgressCell」,
Progresscell.m:
- copyWithZone : (NSZone *)zone
{
ProgressCell *cell = (ProgressCell *)[ super copyWithZone:zone ];
cell->progress = [ progress retain ];
return cell;
}
- (void) drawInteriorWithFrame : (NSRect) cellFrame
inView: (NSView *) controlView
{
[super drawInteriorWithFrame:cellFrame inView:controlView];
if(progress==nil)
{
return;
}
if(![progress superview])
{
[controlView addSubview: progress];
}
[progress setFrame: cellFrame];
[progress sizeToFit];
}
- (void)setProgress:(NsProgressIndicator *)newProgress
{
[newProgress retain];
[progress release];
progress = newProgress;
[progress sizeToFit];
}
現在是一些TableModel的對象添加到表視圖的數據源的時間:
NSString *[email protected]"test";
tableModel *tablemodel=[[tableModel alloc] initWithPriority:[str retain] andProgress:nil];
[tableArrays addObject:tablemodel];
[tableView reloadData];
進度成員是零,因爲我不希望顯示在開頭progressindicator, 想我有一個編輯按鈕,如下設置一個動作:
NsProgressIndicator * progress = [[[NsProgressIndicator alloc] init] autorelease];
[progress setIndeterminate: NO];
[progress setMinValue:0];
[progress setMaxValue:100];
tableModel * zMyDataObj= [[self tableArrays] objectAtIndex:[tableView selectedRow]];
zMyDataObj.progressobj=[progress retain];
[tableView reloadData];
的willDisplayCell委託方法是:
tableModel * zMyDataObj= [[self tableArrays] objectAtIndex:pRow];
if([zMyDataObj progressobj]!=nil)
{
[cell setProgress:[zMyDataObj progressobj]];
}
但是,當我點擊編輯按鈕,一個新的NsProgressindicator總是添加到最後一行,而不是選定的行,addSubView方法絕對不適合這種情況,所以我想尋求一個最佳的解決方案來設置多虧了