Cela me rend fou. Très reconnaissant si quelqu'un pouvait m'aider!Référence CustomView de mon contrôleur
Problème: Je NSView sous-classé (et mis en œuvre initWithRect:
et drawRect:
) et relié à un CustomView dans IB. Ensuite, dans mon Controller.h j'essaye de créer une référence à cette instance en utilisant Viewer *view;
(Viewer est ma sous-classe de NSView). Cependant, quand j'essaie d'atteindre une fonction fictive qui n'effectue que printf("something")
rien ne se passe. Comme je n'ai pas alloué de mémoire pour cette instance [view retainCount] donne 0. J'ai cru comprendre que IB instancierait cette classe pour moi. La raison pour laquelle je veux pouvoir référencer l'instance est que je peux appeler [view setNeedsDisplay: YES]
pour que la vue soit redessinée. J'ai connecté mon CustomView avec la prise de vue dans IB et enregistré.
#import "Viewer.h"
#import "Controller.h"
@implementation Viewer
- (id)initWithFrame:(NSRect)frameRect
{
self = [super initWithFrame:frameRect];
return self;
}
-(void)awakeFromNib
{
printf("awake!\n"); //works!
}
- (void)drawRect:(NSRect)rect
{
CGContextRef myContext = [[NSGraphicsContext currentContext]graphicsPort];
for (int i=0; i<8; i++) {
for (int j=0; j<8; j++) {
printf("%f\n",gPopulation[i][j]/2);
CGContextSetRGBFillColor (myContext, gPopulation[i][j]/2, 0.3, 0.1, 1); // Set color
CGContextFillRect (myContext, CGRectMake (i*50, j*50, 50, 50));
}
}
}
**- (void) redraw { //dummy function that I can't reach from controller with [view redraw]. Gives no error, but retainCount = 0**
printf("redraw------\n");
//[self display];
}
@end
#import <Cocoa/Cocoa.h>
#import "Viewer.h"
double gPopulation[8][8];
@interface Controller : NSObject {
NSMutableArray *emptySpots;
int nEmpty, nWhite, nBlack;
NSOperationQueue *queue;
IBOutlet Viewer *view;
}
- (void) main;
- (id) initWithMain;
- (void) updatePopulation;
- (void) initPopulation;
@end
Merci pour votre réponse, – salomons
Mise à jour avec plus de pensées. –
1. Ok 2. Essayé if (view == nul) { printf ("isNil"); } Et en fait c'est nul. Étrange depuis que j'ai connecté le CustomView (que j'ai changé pour ne pas être NSView mais Viewer [ma sous-classe]) avec la vue de sortie dans ma classe de contrôleur. Est-ce que ça devrait être vraiment nul? 3. J'ai fait glisser une copie de CustomView dans ma fenêtre. Cela doit être la même chose, non? – salomons