Objective c 目标C-将一个值从UIViewController传递到UIView-我一直得到空值

Objective c 目标C-将一个值从UIViewController传递到UIView-我一直得到空值,objective-c,uiview,uiviewcontroller,Objective C,Uiview,Uiviewcontroller,首先,让我说我对目标C是新的 我基本上是试图将原始PriceOnGraph变量从ViewController(UIViewController)传递到GraphView(UIView)的原始变量。但是,当我尝试显示原始文件时,我一直得到0.00。我不明白到底是什么问题。以下是我的一些代码: GraphView.h @interface GraphView : UIView @property (nonatomic) double original; @end GraphView.m @impl

首先,让我说我对目标C是新的

我基本上是试图将原始PriceOnGraph变量从ViewController(UIViewController)传递到GraphView(UIView)的原始变量。但是,当我尝试显示原始文件时,我一直得到0.00。我不明白到底是什么问题。以下是我的一些代码:

GraphView.h

@interface GraphView : UIView
@property (nonatomic) double original;
@end
GraphView.m

@implementation GraphView
@synthesize original;

- (id)initWithFrame:(CGRect)frame
{
   //some code here
}
- (void)drawRect:(CGRect)rect;
{
   NSLog(@"%.2f", original);
   //some more code here
}
@end
ViewController.m

@interface OtherViewController ()
@end
@implementation OtherViewController
@synthesize originalPriceOnGraph;
@synthesize graph;

- (void)viewDidLoad
{
    [super viewDidLoad];
// Do any additional setup after loading the view.

   originalPriceOnGraph = 20.00;

   graph = [[GraphView alloc] init];
   graph.original = originalPriceOnGraph;
}

- (void)didReceiveMemoryWarning
{
   [super didReceiveMemoryWarning];
   // Dispose of any resources that can be recreated.
}
@end
ViewController.h

@interface OtherViewController : UIViewController
@property (strong, nonatomic) GraphView *graph;
@property (nonatomic) double originalPriceOnGraph;
@end
提前谢谢你

编辑:我可以通过在OtherViewController和GraphView之间创建一个IBOutlet来解决这个问题。我还去掉了ViewController.m中GraphView的alloc init语句。谢谢大家的建议

使用:

self.graph = [[GraphView alloc] init];

self.graph.original = originalPriceOnGraph;
使用:

使用:

使用:


您确定GraphView的drawRect:方法在设置其“原始”属性之前没有被调用吗

如果是这样,请尝试使用original的默认值初始化GraphView的任何实例

在GraphView.h中:

-(id)initWithOriginal:(double)original;
在GraphView.m中:

-(id)initWithOriginal:(double)original
{
    self = [super init];
    if (self) {
        [self setOriginal:original];
    }
    return self;
}
在ViewController.m中:

-(void)viewDidLoad
{
    [super viewDidLoad];

    originalPriceOnGraph = 20.00;

    [self setGraph:[[GraphView alloc] initWithOriginal:originalPriceOnGraph]];
}

您确定GraphView的drawRect:方法在设置其“原始”属性之前没有被调用吗

如果是这样,请尝试使用original的默认值初始化GraphView的任何实例

在GraphView.h中:

-(id)initWithOriginal:(double)original;
在GraphView.m中:

-(id)initWithOriginal:(double)original
{
    self = [super init];
    if (self) {
        [self setOriginal:original];
    }
    return self;
}
在ViewController.m中:

-(void)viewDidLoad
{
    [super viewDidLoad];

    originalPriceOnGraph = 20.00;

    [self setGraph:[[GraphView alloc] initWithOriginal:originalPriceOnGraph]];
}

您确定GraphView的drawRect:方法在设置其“原始”属性之前没有被调用吗

如果是这样,请尝试使用original的默认值初始化GraphView的任何实例

在GraphView.h中:

-(id)initWithOriginal:(double)original;
在GraphView.m中:

-(id)initWithOriginal:(double)original
{
    self = [super init];
    if (self) {
        [self setOriginal:original];
    }
    return self;
}
在ViewController.m中:

-(void)viewDidLoad
{
    [super viewDidLoad];

    originalPriceOnGraph = 20.00;

    [self setGraph:[[GraphView alloc] initWithOriginal:originalPriceOnGraph]];
}

您确定GraphView的drawRect:方法在设置其“原始”属性之前没有被调用吗

如果是这样,请尝试使用original的默认值初始化GraphView的任何实例

在GraphView.h中:

-(id)initWithOriginal:(double)original;
在GraphView.m中:

-(id)initWithOriginal:(double)original
{
    self = [super init];
    if (self) {
        [self setOriginal:original];
    }
    return self;
}
在ViewController.m中:

-(void)viewDidLoad
{
    [super viewDidLoad];

    originalPriceOnGraph = 20.00;

    [self setGraph:[[GraphView alloc] initWithOriginal:originalPriceOnGraph]];
}

需要确定的是,viewDidLoad中GraphView的alloc/init是GraphView的唯一alloc/init。在类的一个实例中设置一个值并期望它出现在另一个实例中,这是一个典型的新手错误。需要确定的是,viewDidLoad中GraphView的alloc/init是GraphView的唯一alloc/init。在类的一个实例中设置一个值并期望它出现在另一个实例中,这是一个典型的新手错误。需要确定的是,viewDidLoad中GraphView的alloc/init是GraphView的唯一alloc/init。在类的一个实例中设置一个值并期望它出现在另一个实例中,这是一个典型的新手错误。需要确定的是,viewDidLoad中GraphView的alloc/init是GraphView的唯一alloc/init。在类的一个实例中设置值并期望它出现在另一个实例中,这是一个典型的新手错误。