次のようにGraphViewクラスのプロパティを設定する必要があります。
@interface GraphView : UIView
@property float endXPoint;
次に、ViewControllerから次のようにGraphView変数を設定します。
[myGraphView setendXPoint: [mySlider value]];
[myGraphView setNeedsDisplay];
最後の行は、drawRectメソッドを呼び出して、グラフビューにビューを更新するように要求します。drawRectメソッドでは、クラスプロパティであるため、endXPointを直接使用できます。
これは正しいバージョンです:
//ViewController.h
#import <UIKit/UIKit.h>
#import "GraphView.h" //import headers in the header file
@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet UISlider *mySlider;
@property (strong, nonatomic) IBOutlet UILabel *myLabel;
@property (strong, nonatomic) IBOutlet GraphView *myGraphView; //Connect this with the IB
- (IBAction)moveLine:(id)sender;
- (IBAction)setLabelText:(id)sender;
@end
//ViewController.m
#import "ViewController.h"
@implementation ViewController
@synthesize mySlider;
@synthesize myLabel;
@synthesize myGraphView;
- (IBAction)moveLine:(id)sender {
[myGraphView setendXPoint:[mySlider value]];
[myGraphView setNeedsDisplay];
}
@end
//GraphView.h
#import <UIKit/UIKit.h>
@interface GraphView : UIView
@property float endXPoint;
@end
//GraphView.m
#import "GraphView.h"
@implementation GraphView
@synthesize endXPoint;
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext(); //get the graphics context
CGContextSetRGBStrokeColor(ctx, 1.0, 0, 0, 1);
CGContextMoveToPoint(ctx, 0, 0);
//add a line from 0,0 to the point 100,100;
CGContextAddLineToPoint( ctx, endXPoint,100);
//"stroke" the path
CGContextStrokePath(ctx);
}
@end