0

NSMatrix をキーパッドとして使用し、次のように呼び出しています。

[selectedCell setEnabled:NO];
[selectedCell setTransparent:YES];

キーが選択されたとき(同じ操作が繰り返されないようにするため)。ただし、完了時に選択全体を「反転」するオプションも必要です。つまり、削除されたすべてのセルを置き換え、残りの(選択されていない)セルを非表示にします。

私のマトリックスのすべてのセルをループして、次のようなものを使用してそれらの有効/透過状態を確認することは可能ですか?

if([selectedCell isEnabled] == NO)
  NSLog(@"the cell is disabled");
if([selectedCell isTransparent] == YES)
  NSLog(@"the cell is transparent");

もちろん、上記のコードは機能しませんが、アイデアはわかります...私は比較的初心者なので、どんな助けでも大歓迎です。ありがとう :-)

4

3 に答える 3

1

NSNumberラジオ グループの選択されたインデックスを格納するために使用します ( NSMatrixInterface Builder のように処理されます)。これを実現するために、ラジオ グループの「選択されたインデックス」バインディングを設定するメンバー変数を合成します。

@interface MyClass {
  NSNumber* m_selectedIndex;
}
@property (readwrite, assign) NSNumber* selectedIndex;

さらに、列挙型を追加して、値を人間が読めるようにしました。

typedef enum { APPLE = 0, PLUM = 1 } SELECTION_STATE;
于 2010-10-12T14:21:45.480 に答える
1

NSMatrix を使用すると、列数と行数、および特定の行と列のセルを取得できます。それで、それをいくつかのforループで行います。

タグで移動することはできますが、すべてのセルに独自のタグを付け、(表示する例では) すべてのタグがシリーズになっている必要があります。奇数のアウト、タグの重複、またはタグのないセルは問題を引き起こします。

于 2010-01-16T07:16:26.387 に答える
0

アップデート!!さて、私はこれを次のように解決しました:

for(key=1; key <= 16; key++)
if([[numericKeypad cellWithTag:key] isTransparent] == YES)
    // ...or alternatively...
    // if([[numericKeypad cellWithTag:key] isEnabled:NO])
    {
    [[numericKeypad cellWithTag:key] setTransparent:NO];
    [[numericKeypad cellWithTag:key] setEnabled:YES];
    }
else
    {
    //...disable it...
    }

私は最初からかなり親しかったようですが、経験不足のため、正しい構文を見つけるのに丸一日苦労しました。とにかくどうもありがとう:-)

于 2010-01-15T01:04:16.330 に答える