Learn Swift / viva Cocoa / viva Cocoa


Learn Swift / サンプルプログラム  Memo Pad 1


このコーナーでは、Swift による、Mac OS X アプリケーションの作成方法を、説明しています。

掲載開始日:2016年02月09日
最終更新日:2016年02月12日

home  目次  前へ  次へ  mail


Memo Pad

 ここでは、Web ブラウザの次に、作りたくなるであろうメモ帳を、Swift と Storyboards と Cocoa バインディングの ArrayController を使って作ります。ファイル入出力も実装します。完成したイメージは次のとおりになります。


プロジェクトの作成

 Cocoa Application のプロジェクトを作成します。Product Name を「Memo Pad」に、Language を「Swift」に、チェックボックスは「Use Story boards」にチェックを入れます。


ビューの作成

 ストーリーボードの二つのウィンドウは、上がウィンドウのフレーム (frame、外枠) を表し、下がウィンドウのコンテンツ (content、中身) を表しています。上のウィンドウを選択して、Title を「Memo Pad」にしください。続けてサイズインスペクタで Minimum Content Size と Maximum Content Size にチェックを入れて、それぞれの Width と Height を「480」「270」と「480」「540」にします。これで Memo Pad のウィンドウは最大で 480 x 540、最小で 480 x 270 の大きさになります。最後に、Initial Position でウィンドウを一番上までドラッグしてください。これでウィンドウは、デスクトップの上辺に、表示されることになります。

 ストーリーボードの下のウィンドウに、次の図を参考にして、ビューパーツをレイアウトしてください。ウィンドウのほとんどを占めている白い部分は、Text View を配置しています。各ビューパーツのオートレイアウトも設定してください。Pin パネルでは、ボタンとラベルの Width 項目にもチェックを入れてください。それぞれの値は、ボタンは 69 で、ラベルは 120 です。Width 項目にチェックを入れない場合、ボタンやラベルの横幅が縮小してしまいます。


AppDelegate

 最後に、Memo Pad が、ウィンドウを閉じただけで、終了するようにします。ナビゲータエリアで AppDelegate.swift 選択すると、エディタエリアが AppDelegate.swift のコードに変わります。

 AppDelegate.swift に次のリストのように、コードを追加してください。太字部分が追加するコードです。なお冒頭のコメント部分は省略しています。

import Cocoa

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    func applicationShouldTerminateAfterLastWindowClosed(sender: NSApplication) -> Bool {
        return true
    }

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        // Insert code here to initialize your application
    }

    func applicationWillTerminate(aNotification: NSNotification) {
        // Insert code here to tear down your application
    }


}

 実行ボタンをクリックしてテストしてみてください。ウィンドウはデスクトップの上辺に表示されます。ウィンドウの大きさは高さだけが 270 ポイントから、540 ポイントの間で変更可能です。ウィンドウの大きさを変えた場合は、各ビューパーツもそれぞれの位置に移動することだろうと思います。ウィンドウを閉じると Memo Pad も終了します。


お疲れ様でした。

 次のページでは、Memo Pad のモデルクラスを作成します。


home  目次  前へ  次へ  mail


無断転載禁止、リンクフリー
Copyright 2016. vivacocoa.jp All right reserved.