読者です 読者をやめる 読者になる 読者になる

Cocoa API解説(macOS/iOS)

iOS , Mac アプリケーション開発のために使われる主要フレームワークの日本語情報です。

目次

beginSheet:completionHandler:

ApplicationKit NSWindow

INDEX>AppKit> NSWindow

シートを開始します。

Objective-C

- (void)beginSheet:(NSWindow *)sheetWindow
 completionHandler:(void (^)(NSModalResponse returnCode))handler

Swift

func beginSheet(_ sheetWindow: NSWindow,
completionHandler handler: ((NSModalResponse) -> Void)?)

解説

シートを開始します。

f:id:jjj777:20150318203456g:plain

返り値

なし

引数

シートになるウインドウ
Objective-C

(NSWindow *)sheetWindow

Swift

(_ sheetWindow: NSWindow,

シート終了時に呼ばれるコード
Objective-C

(void (^)(NSModalResponse returnCode))handler

Swift

handler: ((NSModalResponse) -> Void)

フレームワーク

ApplicationKit

クラス

NSWindow

使用可能

10.9-

参照

cocoaapi.hatenablog.com

例文

Objective-C

Swift

    //NSWindow beginSheet:completionHandler:
    func buttonAction042_2(sender: AnyObject){
        //シートの親ウインドウ
        let parentWindow : NSWindow = (sender as NSButton).window!.sheetParent!
        //シートの親ウインドウに対して、シートの終了
        parentWindow.endSheet((sender as NSButton).window!, returnCode: NSModalResponseStop )
//            NSModalResponseStop                 = (-1000),
//            NSModalResponseAbort                = (-1001),
//            NSModalResponseContinue             = (-1002),
        
        
    }
    func buttonAction042(sender: AnyObject){
        
        var theWindow : NSWindow = (sender as NSButton).window!
        var sheetWindow : NSWindow = NSWindow(
            contentRect: NSMakeRect(0.0, 0.0, 200, 150),
            styleMask: NSBorderlessWindowMask,
            backing: .Buffered,
            defer: false)
        sheetWindow.backgroundColor = NSColor.redColor()
        //ボタンを作成
        var sheetButton : NSButton = NSButton(frame: NSMakeRect(50.0, 2.0, 80.0, 30.0))
        sheetButton.title = "Close"
        sheetButton.bezelStyle = NSBezelStyle.RoundedBezelStyle
        sheetButton.action = Selector("buttonAction042_2:")
        sheetWindow.contentView.addSubview(sheetButton)
        
        theWindow.beginSheet(sheetWindow, completionHandler:{responseCode  in
                if (responseCode == NSModalResponseStop) {
                    NSLog("NSModalResponseStop")
                }else{
                    NSLog("Other")
                }
            })

    }
    @IBAction func function042(sender: AnyObject) {
        var aWindow : NSWindow = NSWindow(
            contentRect: NSMakeRect(0.0, 0.0, 300, 200),
            styleMask: NSTitledWindowMask |
                        NSClosableWindowMask |
                        NSMiniaturizableWindowMask |
                        NSResizableWindowMask,
            backing: .Buffered,
            defer: false)
        windowArray.addObject(aWindow) //ウインドウを保持するための配列に追加。アプリ終了時に配列は破棄
        
        //ボタンを作成
        var theButton : NSButton = NSButton(frame: NSMakeRect(100.0, 2.0, 100.0, 30.0))
        theButton.title = "Sheet"
        theButton.bezelStyle = NSBezelStyle.RoundedBezelStyle
        theButton.action = Selector("buttonAction042:")
        aWindow.contentView.addSubview(theButton)
        
        
        
        //ウインドウの表示
        aWindow.center()//ウインドウをスクリーンの中心に
        aWindow.title = "ウインドウタイトル"//タイトル設定
        aWindow.orderFront(self)//前面に
     
    }