Objective c 将NSProgressingIndicator添加到NstableView中的特殊行
我非常困惑,因为NstableView中的多个NSProgressingIndicator无法正常工作,addSubview方法总是将进度单元格添加到tableview中的最后一行,而不是确切地添加到最后一行 我想要的行索引,下面是一些简单的代码: NsTableView数据源有两个成员:Objective c 将NSProgressingIndicator添加到NstableView中的特殊行,objective-c,cocoa,Objective C,Cocoa,我非常困惑,因为NstableView中的多个NSProgressingIndicator无法正常工作,addSubview方法总是将进度单元格添加到tableview中的最后一行,而不是确切地添加到最后一行 我想要的行索引,下面是一些简单的代码: NsTableView数据源有两个成员: @interface tableModel : NSObject { NSString *name; NsProgressIndicator *progressobj; } @property(retai
@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 *str=@"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方法肯定不适合这种情况,因此我想寻找一个最佳解决方案,在NsProgressindicator和一个特殊行之间建立连接,多亏了问题出在
cellFrame
:
[progress setFrame: cellFrame];
cellFrame
指的是单元格在tableView中的位置,它有一个特定的原点(x,y)
。如果要定位进度指示器,应为其创建一个新的rect,并在cellRect
内设置原点
NSMakeRect((cellFrame.size.width - 20.f)/2, cellFrame.size.height - 20.f), 20.f, 20.f)