Hallo in die Runde,
ich lerne seit einiger Zeit die Programmiersprache Swift. Nebenher probiere ich mich auch etwas in Objective-C. Hier stoße ich gerade auf das Problem, dass ich eine Methode die ein NSAlert Fenster öffnen soll nicht in anderen Methoden aufrufen kann. Ich kriege es einfach nicht hin. Ich hab wahrscheinlich ein Denkfehler.
es geht im Code um die Methode "- (void)myDialog" und ich möchte sie gerne in der Action "openImage" nach einer if Abfrage nutzen. In Swift verwende ich einfach den Methodennamen und übergebe dann die entsprechenden Parameter.
#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)setRepresentedObject:(id)representedObject {
[super setRepresentedObject:representedObject];
// Update the view, if already loaded.
}
- (void)myDialog:(NSString *)messageText :(NSString *)infoText {
NSAlert *meinDialog = [[NSAlert alloc] init];
[meinDialog setMessageText: messageText];
[meinDialog setInformativeText: infoText];
[meinDialog addButtonWithTitle:@"OK"];
[meinDialog runModal];
}
- (IBAction)chooseImageButton:(id)sender {
NSOpenPanel *meinDialog = [NSOpenPanel openPanel];
[meinDialog setTitle:@"Öffnen"];
[meinDialog setPrompt:@"Öffnen"];
[meinDialog setAllowedFileTypes:NSImage.imageTypes];
if ([meinDialog runModal] == NSModalResponseOK) {
NSURL *datenURL = [meinDialog URL];
NSString *urlString = datenURL.path;
NSImage *meinBild = [[NSImage alloc] initWithContentsOfFile: [[meinDialog URL]path]];
if (meinBild != nil) {
_bildName.stringValue = urlString;
[_bildAnzeige setImage:meinBild];
}
}
}
- (IBAction)openImage:(id)sender {
//if (_bildName.stringValue == 0) {
// Hier soll die Methode aufgerufen werden, anstatt das Alert-Fenster hier manuell zu Programmmieren.
NSAlert *meinDialog = [[NSAlert alloc] init];
[meinDialog setMessageText: @"Achtung"];
[meinDialog setInformativeText: @"Bitte geben Sie erst einen Dateipfad an, oder wählen Sie eine Datei über den Button \"Auswählen\""];
[meinDialog addButtonWithTitle:@"OK"];
[meinDialog runModal];
}
- (IBAction)beendenClicked:(id)sender {
[[NSApplication sharedApplication] terminate: self];
}
@end
Vielen Dank für eure Hilfe
ich lerne seit einiger Zeit die Programmiersprache Swift. Nebenher probiere ich mich auch etwas in Objective-C. Hier stoße ich gerade auf das Problem, dass ich eine Methode die ein NSAlert Fenster öffnen soll nicht in anderen Methoden aufrufen kann. Ich kriege es einfach nicht hin. Ich hab wahrscheinlich ein Denkfehler.
es geht im Code um die Methode "- (void)myDialog" und ich möchte sie gerne in der Action "openImage" nach einer if Abfrage nutzen. In Swift verwende ich einfach den Methodennamen und übergebe dann die entsprechenden Parameter.
#import "ViewController.h"
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
}
- (void)setRepresentedObject:(id)representedObject {
[super setRepresentedObject:representedObject];
// Update the view, if already loaded.
}
- (void)myDialog:(NSString *)messageText :(NSString *)infoText {
NSAlert *meinDialog = [[NSAlert alloc] init];
[meinDialog setMessageText: messageText];
[meinDialog setInformativeText: infoText];
[meinDialog addButtonWithTitle:@"OK"];
[meinDialog runModal];
}
- (IBAction)chooseImageButton:(id)sender {
NSOpenPanel *meinDialog = [NSOpenPanel openPanel];
[meinDialog setTitle:@"Öffnen"];
[meinDialog setPrompt:@"Öffnen"];
[meinDialog setAllowedFileTypes:NSImage.imageTypes];
if ([meinDialog runModal] == NSModalResponseOK) {
NSURL *datenURL = [meinDialog URL];
NSString *urlString = datenURL.path;
NSImage *meinBild = [[NSImage alloc] initWithContentsOfFile: [[meinDialog URL]path]];
if (meinBild != nil) {
_bildName.stringValue = urlString;
[_bildAnzeige setImage:meinBild];
}
}
}
- (IBAction)openImage:(id)sender {
//if (_bildName.stringValue == 0) {
// Hier soll die Methode aufgerufen werden, anstatt das Alert-Fenster hier manuell zu Programmmieren.
NSAlert *meinDialog = [[NSAlert alloc] init];
[meinDialog setMessageText: @"Achtung"];
[meinDialog setInformativeText: @"Bitte geben Sie erst einen Dateipfad an, oder wählen Sie eine Datei über den Button \"Auswählen\""];
[meinDialog addButtonWithTitle:@"OK"];
[meinDialog runModal];
}
- (IBAction)beendenClicked:(id)sender {
[[NSApplication sharedApplication] terminate: self];
}
@end
Vielen Dank für eure Hilfe