1

コードは機能しますが、ビューのデータソース デリゲートのセッターを誰がどこで呼び出しているのかわかりません。そのコードを呼び出すとすべてが機能する理由を理解しています。誰が呼び出しを行ったか/どこでそれが発生したかを知りたいだけです。ビューのヘッダーは次のようになります。コードの最後の行が重要です。

@class GraphView;

@protocol GraphViewDataSource 

-(float)YValueforXValue:(float)xValue;

@end

@interface GraphView : UIView

@property (nonatomic) CGFloat scale;
@property (nonatomic) CGPoint graphOrigin;
@property (nonatomic, weak) IBOutlet id <GraphViewDataSource> dataSource;

@end

そして、プロトコルに準拠するView Controller:

@interface GraphViewController () <GraphViewDataSource>

@property (nonatomic, weak) IBOutlet GraphView *graphview;

@end

@implementation GraphViewController

@synthesize graphview = _graphview;
@synthesize program = _program;

-(void)setGraphview:(GraphView *)graphview {
    _graphview = graphview;
    self.graphview.dataSource = self;
}

関連性がないため、必要なプロトコルメソッドなどを除外しました。私が知りたいのは、誰が上記のsetGraphViewメソッドを呼び出しているかです。残念ながら、ブレークポイントから助けを得ることができませんでした (ブレークポイントが呼び出されていることは別として)。

また、そのデリゲートは、ビュー内の次のコードによって最初に参照されます。

for (CGFloat thisPointViewXValue=self.bounds.origin.x; thisPointViewXValue<=self.bounds.size.width; thisPointViewXValue +=1/self.contentScaleFactor)
    {
        if (FirstPoint) {
            CGFloat firstpointGraphXValue = [self convertViewXValueToGraphXValue:thisPointViewXValue];
            CGFloat firstpointGraphYValue = [self.dataSource YValueforXValue:firstpointGraphXValue];
            CGFloat firstpointViewYValue = [self convertGraphYValueToViewY:firstpointGraphYValue];
            CGContextMoveToPoint(context, thisPointViewXValue, firstpointViewYValue);
            FirstPoint = NO;

        }
        CGFloat thisPointGraphXValue = [self convertViewXValueToGraphXValue:thisPointViewXValue];
        CGFloat thisPointGraphYValue = [self.dataSource YValueforXValue:thisPointGraphXValue];
        CGFloat thisPointViewYValue = [self convertGraphYValueToViewY:thisPointGraphYValue];
        CGContextAddLineToPoint(context, thisPointViewXValue, thisPointViewYValue);


}

それはそれが起こる場所ですか?

4

2 に答える 2

0

そこに self.graphview.dataSource = self;

于 2012-08-24T18:35:23.707 に答える