在onclick条形图列之后认为不在coreplot Graphview.m中工作

时间:2013-01-15 10:49:51

标签: ios ios6 core-plot

使用coreplot(Barchart)中的以下代码从GraphView.m类

执行segue

但我收到错误:instance method '-performSegueWithIdentifier:sender:' not found (return type defaults to 'id')

我该如何解决?请帮助。
在此先感谢。

-(void)barPlot:(CPTBarPlot *)plot barWasSelectedAtRecordIndex:(NSUInteger)index
    {
        NSLog(@"barWasSelectedAtRecordIndex %d", index);

         [self performSegueWithIdentifier:@"list2" sender:self];
    }

2 个答案:

答案 0 :(得分:1)

如果GraphView.m是一个UIView,你将不会走得太远,因为performSegueWithIdentifier:sender是一个UIViewController方法。

假设graphView是从viewController创建的,你想将它的委托设置为viewController。

GraphView.h中的

  • 在@interface上面声明一个graphView协议:

    @protocol GraphViewDelegate
    -(void)barPlot:(CPTBarPlot *)plot barWasSelectedAtRecordIndex:(NSUInteger)index
     @end

  • 声明一个属性:

    @property (weak) id <GraphViewDelegate> delegate;

GraphView.m中的

-(void)barPlot:(CPTBarPlot *)plot barWasSelectedAtRecordIndex:(NSUInteger)index
    {
        [[self delegate] barPlot:plot barWasSelectedAtRecordIndex:index];
    } 
在ViewController.h中

修改@interface行

@interface MyViewController: UIViewController <GraphViewDelegate>
ViewController.m中的

  • 创建graphView时,将委托设置为self(如果在Interface Builder中创建了graphView,则可以CTRL-拖动一行到viewController来设置委托):

    GraphView* graphView = [GraphView alloc] init];
    [graphView setDelegate:self];

  • 实现您在GraphView中使用的委托方法(您可能不需要index参数,但无论如何我都将它带过来了。)

    -(void)barPlot:(CPTBarPlot *)plot barWasSelectedAtRecordIndex:(NSUInteger)index
     {
        [self performSegueWithIdentifier:@"list2" sender:self];
     }
    

您可能希望修改方法签名,例如

            -(void)graphView:(GraphView*)graphView 
         didSelectBarAtIndex:(NSUInteger)index 
                     barPlot:(CPTBarPlot *)plot 

 (it's good practice to send a reference to the sender along with the message)

答案 1 :(得分:0)

如果您确定没有拼写错误,则可以尝试在.h文件中包含该方法。