我想在用户界面的现有视图中绘制条形图。在用户输入后计算单条高点并存储在数组中。在一个按钮被衬套最终绘制条形图之后,该数组应该传递给我的自定义 GraphView 类。但它不起作用。我不知道我是否正确传递了数组(如何检查它?)以及如何在我的 drawrect 方法中访问它以设置单条高点?一旦我NSNumber *balkenHoehe = [balkenArray objectAtIndex:i];输入 drawrect 方法并balkenHoehe作为 rect-hight 我得到错误。我需要做什么?谢谢!
这是我的代码:
我的 AppDelegate.h
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
@property (weak) IBOutlet NSTextField *eingabeNennmass;
@property (weak) IBOutlet NSTextField *eingabeToleranzOben;
@property (weak) IBOutlet NSTextField *eingabeToleranzUnten;
@property (weak) IBOutlet NSTextField *eingabeAnzahlWerte;
@property (weak) IBOutlet NSTextField *ausgabeMittelwert;
@property (weak) IBOutlet NSTextField *ausgabeToleranz
@property (weak, nonatomic) IBOutlet GraphView *ausgabeGraph;
- (IBAction)pushSimulation:(NSButton *)sender;
@end
我的 AppDelegate.m 缩短了
#import "GraphView.h" 
#import "AppDelegate.h"
implementation AppDelegate
....//couple calculating code and building the array klassenArray//...
    [klassenArray addObject:[NSNumber numberWithDouble: n]];
....//more code//...
[_ausgabeGraph setBalkenArray:klassenArray]; (connected with the GraphView view on the user interface)
....//more code//...
我的 GraphView.h
#import <Cocoa/Cocoa.h>
@interface GraphView : NSView
{
NSMutableArray *balkenArray;
}
- (NSMutableArray *) balkenArray;
- (void) setBalkenArray:(NSMutableArray *)abalkenArray;
@end
我的 GraphView.m
#import "GraphView.h"
@implementation GraphView
//*******************************
- (void) setBalkenArray:(NSMutableArray *)abalkenArray
{
    balkenArray = abalkenArray;
    [self setNeedsDisplay:YES];
}
//*******************************
- (NSMutableArray *)balkenArray
{
    return balkenArray;
}
//*******************************
- (id)initWithFrame:(NSRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
    }
    return self;
}
//*******************************
- (void)drawRect:(NSRect)dirtyRect
{
    NSRect bounds = [self bounds];
    float fieldWith = bounds.size.width / 12.0;
    float fieldHeight = bounds.size.height / 12.0;
        //background
    NSRect hintergrundRect =
    hintergrundRect = NSMakeRect(bounds.origin.x, bounds.origin.y,
                                  bounds.size.width, bounds.size.height);
    [[NSColor grayColor] set];
    [NSBezierPath fillRect:hintergrundRect];
        //Diagram
    for (int i = 1; i<=10; i++) {
        NSNumber *balkenHoehe = [balkenArray objectAtIndex:i];
//        NSLog(@"rectnumber at index %d is %@", i, balkenHoehe);
        NSRect aRect =
        aRect = NSMakeRect (fieldWith*i, fieldHeight, fieldWith, balkenHoehe); //x, y, width, hight
        // draw rect
    [[NSColor whiteColor] set];
    [NSBezierPath fillRect:aRect];
        // draw border
    [[NSColor blackColor] set];
    NSBezierPath *aPath = [NSBezierPath bezierPathWithRect:aRect];
    [aPath setLineWidth:1];
    [aPath stroke];
    }
}
@end