Interface Builder で作成した「行の挿入」と「行の削除」の 2 つのボタンがあります。
テーブルに 0 行がある場合、「行の削除」ボタンをグレー表示にしたいと考えています。
ボタンを無効にする方法は、[button setEnabled:no] またはインターフェイス ビルダーの [有効] ボックスのチェックを外すことだと言われています。ただし、これらのケースはどちらもうまくいきません。
助言がありますか?
Interface Builder で作成した「行の挿入」と「行の削除」の 2 つのボタンがあります。
テーブルに 0 行がある場合、「行の削除」ボタンをグレー表示にしたいと考えています。
ボタンを無効にする方法は、[button setEnabled:no] またはインターフェイス ビルダーの [有効] ボックスのチェックを外すことだと言われています。ただし、これらのケースはどちらもうまくいきません。
助言がありますか?
ボタンの IBOutlet を .h ファイルに次のように作成します。
AppDelegate.h
{
IBOutlet NSButton* yourButton;
}
次に、xib のボタンから ctrl キーを押しながら FileOwner/AppDelegate にドラッグし、ボタンの参照アウトレットを AppDelegate クラスの yourButton に接続します。
ここで、データ ソース メソッドを使用してテーブル ビューにデータを入力する場合は、実装します。
AppDelegate.m
- (NSInteger) numberOfRowsInTableView:(NSTableView *)tableView;
{
if(![yourArray count])
{
[yourButton setEnabled:NO];
}
else
{
[yourButton setEnabled:YES];
}
return [yourArray count];
}
ボタンのバインディングを行った場合は、以下のバインディングに従います。そのためには、ボタンを Enable プロパティにバインドする必要があります - > Array Controller -> Selection ->
Model Keypath -> "@count"
[button setEnabled:NO] でボタンが無効になっていませんか? 無効に見えるようにするには、無効状態に別の視覚スタイルを設定する必要があります。ボタンをタップして、ボタンが有効になっているかテストしてみてください。
デフォルトのグレーアウトには、UIButtonType と UIButton setTitle を設定する必要があります。たとえば、プログラムは次のようになります
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:@"delete row" forState:UIControlStateNormal];
button.enabled = NO;
button.frame = CGRectMake(20, 20, 100, 100);
また、UIButton の背景画像を設定した場合。有効化と無効化のためにカスタム UIImage を設定する必要があります。
[button setBackgroundImage:[UIImage imageNamed:@"enable.png"]
forState:UIControlStateNormal];
[button setBackgroundImage:[UIImage imageNamed:@"disable.png"]
forState:UIControlStateDisabled];
バインディングを使用してテーブル ビューにデータを入力している場合は、次のスニペットを試すことができます
if(![[arrayController arrangedObjects] count])
{
[button setEnabled:YES];
}
else
{
[button setEnabled:NO];
}
ここで、arraycontroller は、XIB の配列を含む NSArrayconrtoller のアウトレットです。