2011-02-02 21 views
2


私のアプリケーションには、管理者と標準の2人のユーザーでログインページがあります。ログインに成功すると、ウェルカムページに移動し、ポップアップボタンが表示されます。私は標準ユーザーのポップアップボタンメニューの3番目と4番目のメニュー項目を無効にします。
管理者は、すべてのメニュー項目を使用可能にする必要があります。
ログインページでのユーザーの選択に基づいてこの区別が必要です。
どうすればいいですか?
KVCの概​​念を使用する必要がありますか?はいの場合、どうですか?NSPopUpButton - メニュー項目を選択的に無効にするには?

ありがとうございます。

答えて

9

ここでは2つのことを行う必要があります。

  1. があなたの第三及び第四のメニュー項目を無効にするには、NOに自分のenabledプロパティを設定する必要があります。

    [[yourPopUpButton itemAtIndex:2] setEnabled:NO]; 
    [[yourPopUpButton itemAtIndex:3] setEnabled:NO]; 
    
  2. NONSPopUpButtonautoenablesItemsプロパティを設定します。

    [yourPopUpButton setAutoenablesItems:NO]; 
    

    あなたがこれを設定しない場合は、ポップアップボタンをクリックすると、メニュー項目が自動的にこれらのことを行う手順1

を使用してそれらを無効にするにもかかわらず、有効になります-(void)awakeFromNibメソッド。


ログインデータを永続ストレージに保存する場合は、NSUserDefaultsを使用できます。例えば。

NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; // LINE 1: create userDefaults instance 
[userDefaults setObject:@"enteredUserType" forKey:@"UserType"]; // LINE 2: store a value 
NSString *userType = [userDefaults objectForKey:@"UserType"]; // LINE 3: retrieve the value 

ここで、UserTypeは、ユーザー定義のキーです。任意のキーを定義できます。

+0

私はWelcomePageクラスのinitメソッドでこれを試しました。私のinitメソッドは次のようになります: - (id)init {...... self = [super init]; ........ if(self){...... [actionList setAutoenablesItems:NO]; ......... [[アクションリストitemAtIndex:2] setEnabled:NO]; ......... [[アクションリストitemAtIndex:3] setEnabled:NO]; ........ リターン・セルフ; .......... } ........ } ..........これは間違っていますか? –

+0

'Interface Builder 'を使って' UI'を作成していますか?もしあなたがそうしているのであれば、ボタンはあなたの 'init'メソッドの中でまだ初期化されていません。 'init'メソッドが終了した後、このコードを試してください。 – EmptyStack

+0

さて、このコードをどこに置くべきかわからないようです。このために使用できるデリゲートメソッドを提案できますか?WelcomePageウィンドウが起動されるとすぐにデリゲートメソッドを呼び出す必要がありますか? –

関連する問題