我正在尝试显示包含一个NSProgressIndicator
的自定义视图。
我正在更改每个计时器事件的doubleValue,但它不会反映在NSProgressIndicator
中。它总是在0
值。
我使用的代码是:
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
self.progressViewTextField.stringValue = [NSString stringWithFormat:@"Row: %ld", row];
[self.progressViewBar setDoubleValue: [self.progressViewBar doubleValue]+5];
NSData * archivedView = [NSKeyedArchiver archivedDataWithRootObject:self.progressView];
NSView * myViewCopy = [NSKeyedUnarchiver unarchiveObjectWithData:archivedView];
NSLog(@"progress: %lf", self.progressViewBar.doubleValue);
return myViewCopy;
}
非常感谢任何帮助实现这一目标。
答案 0 :(得分:1)
请尝试以下代码:
@implementation TVAppDelegate{
NSInteger barValue;
}
- (id)init
{
self = [super init];
if (self) {
_progressList = [NSArray arrayWithObjects:@"A",@"B",@"C", nil];
[NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(timerMethod)
userInfo:nil
repeats:YES];
}
return self;
}
-(void) timerMethod{
barValue+=2;
[self.tableView reloadData];
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView;{
return self.progressList.count;
}
- (NSView *)tableView:(NSTableView *)tableView viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
NSData * archivedView = [NSKeyedArchiver archivedDataWithRootObject:self.progressView];
NSView * myViewCopy =[ NSKeyedUnarchiver unarchiveObjectWithData:archivedView];
[[[myViewCopy subviews] objectAtIndex:1] setDoubleValue: [self.progressViewBar doubleValue]+5];
[[[myViewCopy subviews] objectAtIndex:1] setDoubleValue: barValue];
[[[myViewCopy subviews] objectAtIndex:1] startAnimation:self];
return myViewCopy;
}