Je me demandais s'il est possible de passer la référence d'un NSWindow à un objet personnalisé, puis d'utiliser cet objet pour ajouter un NSButton et l'action/sélecteur associé à ce bouton.Puis-je transmettre la référence d'un NSWindow à un objet personnalisé et utiliser cet objet pour ajouter un NSButton et une action?
Je semble être confronté à des problèmes lorsque je tente cela. Quand je lance le programme d'échantillonnage et cliquez sur le bouton, l'erreur d'exécution suivante se produit: Discussion 1: EXC_BAD_ACCESS (code = 1, adresse = 0x18)
Voici mon code:
// AppDelegate.h
#import <Cocoa/Cocoa.h>
@interface AppDelegate : NSObject <NSApplicationDelegate>
@property (assign) IBOutlet NSWindow *window;
@end
// AppDelegate.m
#import "AppDelegate.h"
#import "CustomObject.h"
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
CustomObject *test = [[CustomObject alloc]init];
[test createButton:_window];
}
@end
// CustomObject.h
#import <Foundation/Foundation.h>
@interface CustomObject : NSObject
{
int test;
NSButton *testButton;
}
- (IBAction)pressCustomButton:(id)sender;
-(void)createButton:(NSWindow*)win;
@end
// CustomObject.m
#import "CustomObject.h"
@implementation CustomObject
-(IBAction)pressCustomButton:(id)sender
{
NSLog(@"pressCustomButton");
}
-(void)createButton:(NSWindow*)win
{
testButton = [[NSButton alloc] initWithFrame:NSMakeRect(100, 100, 200, 50)];
[[win contentView] addSubview: testButton];
[testButton setTitle: @"Button title!"];
[testButton setButtonType:NSMomentaryLightButton]; //Set what type button You want
[testButton setBezelStyle:NSRoundedBezelStyle]; //Set what style You want
[testButton setTarget:self];
[testButton setAction:@selector(pressCustomButton:)];
}
@end