如何在函数之间传递数据(数组)

时间:2011-12-06 16:55:54

标签: objective-c arrays s7graphview

我必须使用s7graphview库来绘制简单直方图,并且我已经调用了自定义函数 -(IBAction)histogram:(id)sender;。在此函数中,来自图像的每个像素作为RGB表示传递给数组。然后计算像素,我有红色,绿色和蓝色阵列。当我尝试将3个数组发送到- (NSArray *)graphView:(S7GraphView *)graphView yValuesForPlot:(NSUInteger)plotIndex;时,我可以发送到NSLog或其他东西,但问题是。这两个函数都在同一个.m文件中,我不知道如何在它们之间传递数据,因为当我写redArray时,Xcode不建议我这个名字。

1 个答案:

答案 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方法。

这与实施UITableViewDelegateUITableViewDataSource方法没有什么不同。当调用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];
}