単純なチャート ビューのようなカスタム ビューを描画するための UITableViewCell の上に UIView を配置しました。次に、新しいデータが来たら UIView を更新しようとしました。しかし、うまくいきません。自分のやり方が正しいかどうか知りたいです。または、UIView を更新する別の方法があります。
Here is code fragment.
UITableViewCell *cell = (UITableViewCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil)
{
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
//
graphView = [[ChartView alloc] initWithFrame:CGRectMake(290, 5, 18, 36)];
[cell.contentView addSubview:graphView];
[graphView release];
nameLabel = [[UILabel alloc] initWithFrame:CGRectMake(10.0, 0.0, 105.0, 45.0)];
[cell.contentView addSubview:nameLabel];
[StockNameLabel release];
}
....
..
return cell;
}
- (void)realTimeData:(NSMutableDictionary *)data { <--- its a call back method
NSIndexPath *cellIndexPath = [NSIndexPath indexPathForRow:i inSection:0];
UITableViewCell *cell = [m_InterestTableView cellForRowAtIndexPath:cellIndexPath];
ChartView *chartView = (ChartView*)[cell.contentView.subviews objectAtIndex:0];
[chartView initWithPrices:sPrice withcPrice:cPrice withlPrice:lPrice withhPrice:hPrice];
}
ChartView
- (void) refreshScreen{
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect
{
//get graphic context
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextClearRect(context, rect);
CGContextSetLineWidth(context,2.0f);
CGContextSetShouldAntialias(context, NO);
CGContextMoveToPoint(context,x1,y1);
CGContextAddLineToPoint(context,x2, y2);
[RGB(r,g, b) set];
CGContextStrokePath(context);
CGContextAddRect(context,fillArea);
[RGB(r, g, b) set];
CGContextFillPath(context);
}