Learn Swift / viva Cocoa / viva Cocoa


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


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

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

home  目次  前へ  次へ  mail


ボタンのバインド

 このページでは、Memo Pad のCocoa バインディングを続けます。

 Remove ボタンを選択して、バインディングインスペクタで Availability グループの Enabled を開きます。そして、Bind to: にチェックを入れて ArrayController を選びます。Controller Key には「canRemove」と入力してください。Model Key Path は空白のままにしておきます。

 これで、Remove ボタンは、削除するメモがない時、 つまりメモが 0 個の場合は、使えなくなります。

 次に、Back ボタンを選択して、バインディングインスペクタで Availability グループの Enabled を開きます。そして、Bind to: にチェックを入れて ArrayController を選びます。Controller Key には「canSelectPrevious」と入力してください。Model Key Path は空白のままにしておきます。

 これで、Back ボタンは、戻るメモがない時、 つまり最初のメモが表示されている場合は、使えなくなります。

 次に、Next ボタンを選択して、バインディングインスペクタで Availability グループの Enabled を開きます。そして、Bind to: にチェックを入れて ArrayController を選びます。Controller Key には「canSelectNext」と入力してください。Model Key Path は空白のままにしておきます。

 これで、Next ボタンは、次のメモがない時、 つまり最後のメモが表示されている場合は、使えなくなります。

 設定が終わりましたら一度テストしてみてください。


ラベルのバインド

 ラベルを選択して、バインディングインスペクタで Value With Pattern グループの Display Pattern Value1 を開きます。そして、Bind to: にチェックを入れて ArrayController を選びます。Controller Key には「selectionIndex」と入力してください。Model Key Path は空白のままにしておきます。Display Pattern には「%{value1}@」と表示されていると思います。もし違っていれば「%{value1}@」と入力してください。

 アプリケーションをテストすると、ラベルには、現在のメモのインデックス番号が表示されます。最初のメモが 0 番目になります。メモがないときには、「9223372036854775807」と表示されます。この数値は、64ビット整数型の最大値です。なぜこの数値が表示されるのかは謎ですが、0 の前の数値が、この最大値に戻るみたいです。

「9223372036854775807」は、64ビット整数型符号ありの最大値です。符号ありの場合、0の前の数値は、-1 です。一方、64ビット整数型符号なしの最大値は「18446744073709551615」です。なぜここで 0 の前が「9223372036854775807」になるのかは分かりません。

 次に、ラベルを選択したまま、バインディングインスペクタで Value With Pattern グループの Display Pattern Value1 を閉じて、Display Pattern Value2 を開きます。そして、Bind to: にチェックを入れて ArrayController を選びます。Controller Key には「arrangedObjects」と入力してください。Model Key Path には「@count」と入力します。Display Pattern には「%{value1}@」と表示されていると思います。それを「%{value1}@ of %{value2}@」と入力し直してください。

 アプリケーションをテストしてメモを追加すると、ラベルには、「0 of 1」と表示されます。"メモのインデックス番号 of メモの総数" という意味です。色々と試して遊んでみてください。


お疲れ様でした。

 次のページでは、ラベルに表示されるページ番号の不具合を修正します。


home  目次  前へ  次へ  mail


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