シンプルなチャートビューのようなカスタムビューを描画するためのUIViewをUITableViewCellに配置しました。 次に、新しいデータが来たらUIViewを更新しようとしました。しかし、それは動作しません。私は自分のやり方が正しいかどうかを知りたがります。または、UIViewを更新する別の方法があります。あなたはChartViewインスタンスへのアクセスを取得した場合cellForRowAtIndexPathの外でUITableViewCellの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);
}
whoa ...なぜrealTimeData:chartbackでChartViewでinitを呼び出していますか? –
initはデータを供給するだけです。ルックコードを取る - (ボイド)initWithPrices:(CGFloat)lstPrice withsPrice:(CGFloat)sPrice withcPrice:(CGFloat)cPrice withlPrice:(CGFloat)lPrice withhPrice:(CGFloat)hPrice { _lstPrice = lstPrice。 _sPrice = sPrice; _cPrice = cPrice; _hPrice = hPrice; _lPrice = lPrice; [self refreshScreen]; } – yongjoon