[Xamarin.Mac] セグエを使ったWindowの表示

今回はセグエ(画面と画面を接続するための部品)を使用して、別ウィンドウを表示する方法を見ていきます。

1.メイン画面の作成

はじめに、新規でCocoaアプリケーションプロジェクトを作成してください。

次に、ソリューションエクスプローラーからMain.storyboardを見つけ、ダブルクリックして開きます。

Xcodeが表示されるので、Buttonを1つ配置します。

2.サブウィンドウの追加

次にサブウィンドウを追加します。

オブジェクトライブラリからView Controllerを探して、デザインエリアにドラッグ&ドロップして追加してください。

配置したView Controllerには、表示したときにサブウィンドウであることがわかるようにLabelコントロールを配置して、「サブウィンドウ」という文字を設定しておきます。

Labelに表示する文字列は、Labelを選択状態にして、Attribute InspectorでTextプロパティを変更します。

3.サブウィンドウを表示する

次にButtonがクリックされたとき、配置されたサブウィンドウが表示されるようにしてみましょう。

1つめのView Controllerに配置したButtonを[control]キーを押しながらドラッグして、新しく配置したView Controllerの上でドロップします。

続いて、Action Segueダイアログが表示されます。このダイアログでは、接続する画面がどのように表示されるかを選択します。

ここではModalを選択することとします。

Modalを選択後は、新しく配置されたView Controllerに向かって矢印が接続されます。これがSegueです。

ここまで作成できたら[command]+[s]を押して保存をし、Visual Studioに戻ります。

実行ボタンを押して、動作を確認してみましょう。

はじめにメインウィンドウが表示されます。

Buttonをクリックすると、以下のようにサブウィンドウが表示されます。

Modal表示の場合は、サブウィンドウが閉じられるまで呼び出し元の画面を触ることはできません。

ここまで、1行もコードを書きませんでした。

このように単に画面を表示するだけであればコードを書かく必要はありません。

4.Action Segue

先ほど説明したようにAction Segueでは画面の表示方法を選択することができます。

Xcodeでサブウィンドウに接続された矢印(segue)を選択してKindを変更することでも表示方法を変更することができます。

それぞれがどのような画面になるかを見ていきましょう。なおModalについてはすでに説明済みなので割愛します。

4-1.Show

表示方法をShowにした場合は、Modalと同じようにサブウィンドウが表示されます。

Modalはサブウィンドウを閉じるまでメインウィンドウを触れませんが、Showはサブウィンドウが開いている状態でもメインウィンドウを触ることができます。

4-2.Sheet

Sheetは、メインウィンドウの上からスルスルッと下に向かって表示される画面になります。

サブウィンドウを閉じるには、コードを書く必要があります。これについては次回紹介します。

4-3.Popover

Popoverは吹き出しのように表示させることができます。

[Xamarin.Mac] Visual StudioでMacアプリを作成する

Visual Studio for Macを使用している方であれば、Mac用のアプリケーションを作成することができます。

今回は、新規プロジェクトの作成方法とプロジェクトに追加されたファイルがどのようなものかを見ていきます。

Macアプリ用のプロジェクトを作成してみよう

Mac用のアプリを作成するには、Visual Studio for Macで「新規プロジェクトの作成」で「新しいプロジェクト」のダイアログを表示します。

続いて左側で[Mac]-[アプリ]を選択して、右側の一覧で「Cocoa app」を選択し[次へ]ボタンをクリックします。

続いて下図のようにMacのアプリ構成の設定を行います。App Nameにアプリケーション名を、Organization Identifierには、企業URLを逆から入力します。企業URlがない場合は、とりあえず適当でも構いません。Dock Itemにチェックを付けると、デスクトップやDockに表示する名前を入力することができます。ターゲットはOS Xのどのバージョン以降で動作するアプリケーションとして開発するのかを選択します。以上の設定が完了したら[次へ]ボタンをクリックします。

Extensionsにチェックを付けると、アプリで使用するファイルの拡張子を設定をすることができます。今回は使用しないこととします。

次の画面ではプロジェクト名やソリューション名、保存場所といった設定を行うことができます。特に必要がなければデフォルト設定のままで[作成]ボタンをクリックします。

プロジェクトのファイルを確認しよう

プロジェクトの作成が完了すると、ソリューションエクスプローラーは以下のようになります。

Main.cs

Main.csはアプリケーションのエントリポイントです。アプリが起動されると最初に実行されるクラスとメソッドが追加されています。Mainめそっどの中ではアプリケーションのインスタンスを作成し、OSのイベントを処理できるようにしています。

using AppKit;

namespace MyApp
{
    static class MainClass
    {
        static void Main(string[] args)
        {
            NSApplication.Init();
            NSApplication.Main(args);
        }
    }
}

AppDelegate.cs

AppDelegate.csはOSからのイベントを受け取るクラスが実装されています。

DidFinishLaunchingメソッドは、アプリケーションのインスタンスが作成された後に実行され、アプリのウィンドウを作成してビューを表示する処理を実行します。

WillTerminateメソッドは、ユーザーやシステムがアプリケーションを終了しようとしたときに実行されます。アプリケーションが終了する前に、設定の保存や何かしらの処理を行いたい場合は、このメソッドにコードを追加します。

using AppKit;
using Foundation;

namespace MyApp
{
    [Register("AppDelegate")]
    public class AppDelegate : NSApplicationDelegate
    {
        public AppDelegate()
        {
        }

        public override void DidFinishLaunching(NSNotification notification)
        {
            // Insert code here to initialize your application
        }

        public override void WillTerminate(NSNotification notification)
        {
            // Insert code here to tear down your application
        }
    }
}

ViewController.cs

Xamarin.MacのアプリはMVCモデルです。ViewControllerはメインウィンドウのコントローラーを表すクラスで、ライフサイクルを管理します。

using System;

using AppKit;
using Foundation;

namespace MyApp
{
    public partial class ViewController : NSViewController
    {
        public ViewController(IntPtr handle) : base(handle)
        {
        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            // Do any additional setup after loading the view.
        }

        public override NSObject RepresentedObject
        {
            get
            {
                return base.RepresentedObject;
            }
            set
            {
                base.RepresentedObject = value;
                // Update the view, if already loaded.
            }
        }
    }
}

ViewController.Designer.cs

ViewController.Designer.csファイルはユーザーインターフェースを作成したときに自動で作成されるファイルです。

Info.plist

Info.plistはアプリケーションに関する情報を入力することができます。新規プロジェクト作成時に入力した内容もここで確認/変更することができます。

Entitlement.plist

Entitlement.plistはアプリのサンドボックスやiCloudでの設定を行うことができます。

[GitHub] Gitを使用する(3)

前回と前々回の記事で、GitHubへのアカウントを作成し、リポジトリを作成するまでを説明しました。

今回は、Visual Studio for Macから、コミット、プッシュする方法について見ていきましょう。

そもそもコミットとプッシュは何が違うのか

ソース管理にはGitの他にもSubversion(以降svn)やcvsなどがあります。

良く使用されるのはsvn、Gitあたりでしょうか。

svnにおけるコミットは、変更のあったソースをリポジトリに反映することをいいます。

では、svnにおけるコミットはというと、ローカルのソースをリポジトリに登録するというシンプルなものです。

Gitはというと、ローカルの変更のあったソースをローカルリポジトリに反映させることをコミット(Commit)と呼びます。

また、ローカルリポジトリの内容をリモートリポジトリに反映させることをプッシュ(Push)と呼びます。

Visual Studio for Macでのリポジトリ設定

Visual Studio for MacでGitによるソース管理を行うには、設定が必要です。

この設定は、メニューの[バージョン管理]-[ブランチとリモートを管理する]から行います。

以下のダイアログが表示されるので[追加]ボタンをクリックします。

続いて以下のダイアログが表示されます。名前欄には人にの名称を入力しURLには、作成しておいたリポジトリのパスを入力します。入力が完了したら[OK]を押してダイアログを閉じます。

コミット、プッシュを実行する

続いて、コミットやプッシュをする方法を見ていきましょう。

こちらも[バージョン管理]のメニューから実行が可能で、以下のように[ソリューションを確認してコミット]でローカルリポジトリに反映、[変更をプッシュ]でリモートリポジトリへ反映します。

リモートリポジトリに正しく反映できた場合は、GitHubのサイトで以下のように確認できます。