1

Interface Builder で作成した「行の挿入」と「行の削除」の 2 つのボタンがあります。

テーブルに 0 行がある場合、「行の削除」ボタンをグレー表示にしたいと考えています。

ボタンを無効にする方法は、[button setEnabled:no] またはインターフェイス ビルダーの [有効] ボックスのチェックを外すことだと言われています。ただし、これらのケースはどちらもうまくいきません。

助言がありますか?

4

6 に答える 6

1

ボタンの 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];
}
于 2013-10-21T06:11:23.793 に答える
0

ボタンのバインディングを行った場合は、以下のバインディングに従います。そのためには、ボタンを Enable プロパティにバインドする必要があります - > Array Controller -> Selection ->
Model Keypath -> "@count"

于 2013-10-20T16:31:24.607 に答える
0

[button setEnabled:NO] でボタンが無効になっていませんか? 無効に見えるようにするには、無効状態に別の視覚スタイルを設定する必要があります。ボタンをタップして、ボタンが有効になっているかテストしてみてください。

于 2013-10-20T16:07:29.733 に答える
0

デフォルトのグレーアウトには、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];
于 2013-10-20T16:25:15.190 に答える
0

バインディングを使用してテーブル ビューにデータを入力している場合は、次のスニペットを試すことができます

if(![[arrayController arrangedObjects] count])
        {
            [button setEnabled:YES];
        }
        else
        {
            [button setEnabled:NO];
        }

ここで、arraycontroller は、XIB の配列を含む NSArrayconrtoller のアウトレットです。

于 2013-10-21T05:31:37.463 に答える