HI, I am a new to programming in Cocoa and I am trying to write a program that has a button in the main window (MainWindow.xib) which when pushed opens another window (newWindow.xib) containing an image in it. The new window also has a custom View class called 'OUSubImageView' (subclass of NSView) that displays the image. The file name of the image is passed from the appController class to the NewWindowController class (controls the new Window) which inturn passes the file name to the OUSubimageView class which then displays the image.
The problem I am facing is that when I call the new Window and pass the file name onto the new window, the view (OUCustomView class) inside the window does not show the image. The new Window would show the image if I hard code the filename into the drawRect function inside the OUSubImageView class. On debugging, I found that when I run the command [NewWindow showWindow:self] in the APPController class, the constructor of 'OUSubImageView is called twice implying that two new instances of the class have been created (both these instances don't contain the image to be displayed) and it is one of these instances that calls the drawRect function at the time that the window is rendered. I am not sure why this happens and how to correct it. I would sincerely appreciate any and all help in solving this problem. Thanks in advance Genu The relevant code for the various classes are //***************** //AppController class // has the action for the button #import <Cocoa/Cocoa.h> #import "NewWindowController.h" #import "OUSubimageView.h" @interface AppController : NSObject { NSWindowController * myMainWindow; } - (IBAction)showNewWindow:(id)sender; // aci @end @implementation AppController - (id)init { [super init]; return self; } - (IBAction)showNewWindow:(id)sender { NewWindowController *myNewWindow; myNewWindow=[[NewWindowController alloc]initwithImageFileName:@"/Users/deewu/Pictures/Summer2008/summer2008 005.jpg"]; [myNewWindow showWindow:self]; } //****************** // NewWindowController class // Class that controlls the new window #import <Cocoa/Cocoa.h> #import "OUSubImageView.h" @interface NewWindowController : NSWindowController { IBOutlet OUSubImageView * aOUSubImageView; } - (id)initwithImageFileName:(NSString *)fileName; - (IBAction)showWindow:(id)sender; @end @implementation NewWindowController - (id)initwithImageFileName:(NSString *)fileName{ // 1) initialize with name of the xib or nib (window) file that you want to open it if (![super initWithWindowNibName:@"NewWindow"]) return nil; if(!aOUSubImageView){ NSRect frame = NSMakeRect(10, 10, 100, 300); aOUSubImageView = [[OUSubImageView alloc] initWithFrame:frame]; } [aOUSubImageView ssetImage:fileName]; return self; } - (IBAction)showWindow:(id)sender { [super showWindow:sender]; [aOUSubImageView lockFocus]; [aOUSubImageView drawRect:[aOUSubImageView bounds]]; [aOUSubImageView unlockFocus]; } //****************** #import <Cocoa/Cocoa.h> @interface OUSubImageView : NSView { NSImage *JPEGImage; } -(id)JPEGImage; - (void) ssetImage:(NSString *)imageFileImage; - (void)drawRect:(NSRect)Rect; @end @implementation OUSubImageView - (id)initWithFrame:(NSRect)frame { if (![super initWithFrame:frame]) return nil; return self; } - (void) ssetImage:(NSString *)imageFileImage{ [JPEGImage initWithContentsOfFile:imageFileImage]; [self setNeedsDisplay:true]; } - (void)drawRect:(NSRect)Rect { // draw image if there is image if(JPEGImage) { [JPEGImage setFlipped:NO]; NSPoint leftPoint = NSMakePoint(0, 0); [JPEGImage compositeToPoint:leftPoint operation: NSCompositeSourceOver]; } } _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]