このまえ、クラスを使ってアラートダイアログ出したと思うんだけど、
インスタントのメソッドでアラートを出していたので
AlertClass *myClass = [[AlertClass alloc]init];
という感じでインスタンスをわざわざ作らないとメソッドを実行できなかった。
よく調べてみると
クラスメソッドでアラートダイアログを出せばインスタンスが必要ないということがわかった。
というわけで前回のクラスのコードを流用してメソッドだけをクラスメソッドに変更。
変更は簡単。宣言部と実装部の
– (void)Alert:(NSString *)AlertMsg;
の「ー」マイナスを「+」にすればいいだけ。
+ (void)Alert:(NSString *)AlertMsg;
こんな感じ。。
《AppDelegate.h》
#import <Cocoa/Cocoa.h> @interface AppDelegate : NSObject @property (assign) IBOutlet NSWindow *window; @property (assign) IBOutlet NSTextField *TextField; - (IBAction)PushButton:(id)sender; @end
《AppDelegate.m》
#import “AlertClass.h”
#import “AppDelegate.h”
@implementation AppDelegate
@synthesize TextField = _TextField;
@synthesize window = _window;
– (IBAction)PushButton:(id)sender {
[myClass Alert:self.TextField.stringValue];
}
@end
《AlertClass.h》
#import <Foundation/Foundation.h> @interface AlertClass : NSObject - (IBAction)PushButton:(id)sender; - (void)Alert:(NSString *)AlertMsg; @end
《AlertClass.m》
#import “AlertClass.h”
@implementation AlertClass
– (void)Alert:(NSString *)AlertMsg
{
NSAlert *AlertDialog =[NSAlert
alertWithMessageText:@”アラート!!”
defaultButton:@”OK”
alternateButton:0
otherButton:0
informativeTextWithFormat:AlertMsg
];
[AlertDialog runModal];
}
@end
コメント