macOS/iOS API解説

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。2010年代に書かれた内容です。今後更新はありません。

目次

runModalSession:

INDEX>AppKit>NSApplication

モーダルセッションを実行します

Swift4.2

 open func runModalSession(_ session: NSApplication.ModalSession) -> NSApplication.ModalResponse

Objective-C

- (NSInteger)runModalSession:(NSModalSession)session

解説

モーダルセッションを実行します。
【モーダルの状態】
Swift4.2
NSApplication.ModalSession
● .continue モーダルセッションは継続中
● .stop

Objective-C
● NSRunStoppedResponse
● NSRunAbortedResponse
● NSRunContinuesResponse モーダルセッションは継続中

developer.apple.com

返り値

Swift

NSApplication.ModalSession

Objective-C

( NSInteger )

引数

( NSModalSession )session

beginModalSessionForWindow:で返されるモーダルセッション

フレームワーク

ApplicationKit

クラス

NSApplication

使用可能

10.0

編集時のバージョン

OS X 10.14.5
Swift4.2

例文

Swift4.2

let anApplication = MyApplication.shared

        let session :NSApplication.ModalSession = anApplication.beginModalSession(for: modalWindow)
        
        while true {
            //circleIndi.doubleValue = circleIndi.doubleValue + 0.1
            circleIndi.doubleValue = 50.0
            if (anApplication.runModalSession(session) != .continue){
            break;
            }
            print("!!")
        }
        anApplication.endModalSession(session)


Objective-C

#import "Controller.h"

@implementation Controller

NSModalSession mSession;
 
- (IBAction)startModal:(id)sender
{
	int modalCode;
	[NSApp stopModal];
	
	mSession = [NSApp beginModalSessionForWindow:panelWin];

	//モーダルの状態を監視
	do {
		//例外のハンドリング
		NS_DURING
			modalCode = [NSApp runModalSession: mSession];
		NS_HANDLER
			NSLog(@"%s\n", [[localException name] cStringUsingEncoding:NSASCIIStringEncoding]);
		NS_ENDHANDLER
			NSLog(@"--- noumal ");

	} while (modalCode == NSRunContinuesResponse);

}
- (IBAction)endModal:(id)sender
{

	[NSApp stopModal];
	[NSApp  endModalSession:mSession];
	[panelWin orderOut: self];


}

@end

Swift

    //NSApplication beginModalSessionForWindow runModalSession
    @IBAction func function014(sender: AnyObject) {
        NSLog("beginModalSessionForWindow")
        var modalCode:NSInteger;
        NSApp.stopModal()
        let anApplication = MyApplication.sharedApplication()
        var session:NSModalSession = anApplication.beginModalSessionForWindow(newWindow)
        
        do{
            modalCode = NSApp.runModalSession(session)
             NSLog("loop")
        }while (modalCode == NSRunContinuesResponse)
        NSLog("end")
        anApplication.endModalSession(session)
    }