0

首先,让我说我是 Objective C 的新手。

我基本上是在尝试将 ViewController (UIViewController) 中的 originalPriceOnGraph 变量传递给 GraphView (UIView) 中的原始变量。但是,当我尝试显示原件时,我不断得到 0.00。我不明白到底是什么问题。这是我的一些代码:

图形视图.h

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

图形视图.m

@implementation GraphView
@synthesize original;

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

视图控制器.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

视图控制器.h

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

先感谢您!

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

4

2 回答 2

3

你确定 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]];
}
于 2013-10-06T18:29:12.380 回答
0

利用 :

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

self.graph.original = originalPriceOnGraph;
于 2013-10-06T09:20:59.440 回答