我必须使用s7graphview
库来绘制简单直方图,并且我已经调用了自定义函数
-(IBAction)histogram:(id)sender;
。在此函数中,来自图像的每个像素作为RGB表示传递给数组。然后计算像素,我有红色,绿色和蓝色阵列。当我尝试将3个数组发送到- (NSArray *)graphView:(S7GraphView *)graphView yValuesForPlot:(NSUInteger)plotIndex;
时,我可以发送到NSLog或其他东西,但问题是。这两个函数都在同一个.m文件中,我不知道如何在它们之间传递数据,因为当我写redArray时,Xcode不建议我这个名字。
答案 0 :(得分:1)
由于- (NSArray *)graphView:(S7GraphView *)graphView yValuesForPlot:(NSUInteger)plotIndex
是委托方法,因此在您的类中应该实现,并将其作为S7GraphView
对象的委托。您没有明确调用,您在.m实现中将其定义为:
- (NSArray *)graphView:(S7GraphView *)graphView yValuesForPlot:(NSUInteger)plotIndex
{
if ( plotIndex == <some index value> )
return redArray;
else
return nil;
}
我不知道plotIndex
与您的各种颜色数组相对应,但您应该明白这一点。
当S7GraphView
对象需要该数据时,它将调用delegate
方法。
这与实施UITableViewDelegate
和UITableViewDataSource
方法没有什么不同。当调用UITableView
方法-reloadData
时,它将调用您的视图控制器(假设它是表的委托/数据源)以通过
UITableViewCell
个对象
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell = <... dequeue or created ... >.
/*
do some cell set up code based on indexPath.section and indexPath.row
*/
return cell;
}
与S7GraphView
类似,我敢肯定(我没有API可以看到它所做的一切)。在IBAction
方法中,您可能会执行以下操作:
- (IBAction)histogram:(id)sender
{
// maybe you recalculate your red, green, and blue component arrays here and cache
// or maybe you calculate them when requested by the delegate method
// tell the S7GraphView it needs to update
// (not sure what the reload method is actually called)
[self.myS7GraphView reloadGraph];
}