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 メモの総数" という意味です。色々と試して遊んでみてください。
お疲れ様でした。
次のページでは、ラベルに表示されるページ番号の不具合を修正します。
無断転載禁止、リンクフリー Copyright 2016. vivacocoa.jp All right reserved.