[Xamarin.Mac] ボタンを配置して、OutletとActionを追加してみました

2020.11.08

1 はじめに

CX事業本部の平内(SIN)です。

Xamarin.Macを使用すると、C#でネイティブなMacのアプリが作成可能です。

ここでは、私自身がXamarin.Macに入門して学習した事項を覚書として残させて頂きます。

今回は、ウインドウにボタンを配置する方法、そして、そのボタンにC#からアクセスする方法、及び、ボタンをクリックした時のイベントの記述方法について確認してみました。

2 プロジェクト

プロジェクトは、「ファイル」ー「新しいソリューション」から「Mac」ー「アプリ」ー「Cocoaアプリ」と辿って作成しています。

3 ボタンの配置

UI(ボタン)の配置は、XcodeInterface Builderで作業します。

ファイルの一覧からMain.Storyboardを右クリックして、「プログラムから開く」「Xcode Interface Builder」を選択すると、Xcodeが起動します。

から、Push Buttonを選択して、ウインドウに配置します。

Xamarinでコンパイル・実行すると、ウインドウにボタンが表示されます。ただし、この時点でC#からこれを操作することはできません。

4 Outlet

配置したボタンのOutletを作成すると、C#からコントロールの1つとしてアクセス可能になります。

Xcodeに戻り、Assistantで、アシスタントウインドウを表示し、ボタンを配置したウインドウのヘッダファイルとなるViewController.hを表示します。

Controlキーを押しながら、ボタンを選択し、コード上にドラッグします。ポップアップで名前(ここでは、myButtonとしました)を入力することで、Outletが作成されます。

Xamarinに戻ってViewController.designer.csを確認すると、ViewControllerのプロパティとして、myButtonが追加されている事が分かります。

C#からは、ViewControllerクラスのプロパティとしてアクセス可能になったので、少しコードを書いてみます。

下記では、ViewControllerの初期化後、直ちに、myButtonのタイトルを変えています。

実行して、変更されていることが確認できます。

5 Action

配置したボタンのActionを作成すると、C#からコントロールに関するイベントを記述することが可能になります。

再び、Xcodeに戻り、先ほどと同じように、Controlキーを押しながらボタンを選択して、コード(ViewController.h)にドラッグし、今度は、Actionを作成します。ここでは、名前をonClickMyButtonとしました。

Xamarinに戻るとViewController.designer.csの中で、ViewControllerのメソッドとして、onClickMyButtonが追加されている事が分かります。

コードの編集は、ViewController.csの方で行いますが、partialと入力すると、インテリセンスで定義されているメソッド名が一覧されるので、エンターだけで簡単に追加可能です。

クラス変数として、counterを定義し、イベントが発生するたびに、インクリメントしてボタンのタイトルに表示してみました。

クリックするたびに数字が増えることが確認できれば、想定どおりです。

6 最後に

今回は、OutletとActionについて確認してみました。これが、コードとUIを連携する、最も基本的な作業になると思います。