0

アプリの単位を設定する設定画面があります。ユーザーはメイン画面から設定画面に移動でき、目的の単位を選択すると、設定画面が閉じます。

ユーザーがメイン画面に戻ったら、2つのUITextFieldを非表示にして表示したいと思います。

次のコードを試してみましたviewDidLoadviewDidAppear、機能しません。

textBox1.hidden = YES;
textBox2.hidden = NO;

これは些細なことかもしれませんが、どんな助けでもありがたいです。ありがとう。

アップデート:

「設定」画面をSugue使用して接続しpush、設定画面を[self.navigationController popViewControllerAnimated:YES];閉じて、ユーザーをメイン画面に戻しました。今、設定に基づいて画面コントロールを更新する必要がありますが、機能していません

4

4 に答える 4

1

最初に:そうではないはずです

self.textBox1 = YES; // or [self.textBox1 setHidden:YES];
self.textBox2 = NO; // or [self.textBox2 setHidden:NO];

2番目:アウトレットがnullでないことを確認します

NSLog("textBox1 = %@" , self.textBox1);

3番目:このようなコードを試してください

int64_t delayInSeconds = 15.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
  self.textBox1.hidden = YES;
  self.textBox2.hidden = NO ;
});

viewWillAppearまたはDidAppearでこれを行います。その後、15秒以内に、すべてが正しく配線されているかどうかの変化が表示されます。

于 2013-01-11T14:56:45.793 に答える
0

次のブールを(設定画面で)「はい」または「いいえ」に設定します。

BOOL hideTextBox1;
BOOL hideTextBox2;

(設定画面で)変数を保存します。

NSString *hideTextBox1String;
NSString *hideTextBox2String;

if(hideTextBox1 == YES){
    hideTextBox1String = @"YES"
}else{
    hideTextBox1String = nil
}

if(hideTextBox2 == YES){
    hideTextBox2String = @"YES"
}else{
    hideTextBox2String = nil
}

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:hideTextBox2String  forKey:@"hideTextBox2"];
[defaults setObject:hideTextBox1String  forKey:@"hideTextBox1"];
[defaults synchronize];

最初のビューコントローラで取得します。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSString *hideBox1 = [defaults objectForKey:@"hideTextBox1"];
NSString *hideBox2 = [defaults objectForKey:@"hideTextBox2"];

if(hideBox1 != nil){
    textBox1.hidden = YES;
}else{
    textBox1.hidden = NO;
}

if(hideBox2 != nil){
    textBox2.hidden = YES;
}else{
    textBox2.hidden = NO;
}

これにより、元に戻すまで変更が永続的になります。それがあなたが探しているものだと思います。

于 2013-01-11T15:11:03.563 に答える
0

テキストの設定も機能しないので、IBOutletsがめちゃくちゃになっているのではないかと思います。それらをやり直すには、次のようにします。

  1. まずストーリーボードに移動し、作業中のビューコントローラにズームインします
  2. Control + UITextViewまたはUITextFieldをクリックすると、同様のメニューが表示されます。 ここに画像の説明を入力してください

txtCaseIDという名前のIBOutletセットがあることがわかります

  1. 私のようなアウトレットセットが表示された場合は、Xをクリックして削除してください
  2. このアウトレットを再度追加するには、アシスタンスエディタを開いて、ストーリーボードと.hを表示します。
  3. Control +クリックして、ストーリーボードのテキストボックスから.hで以前に作成したIBOutletに次のようにドラッグします。

ここに画像の説明を入力してください

両方のtextBoxに対してこれを必ず行ってください。他にサポートが必要な場合はお知らせください--

于 2013-01-11T17:23:37.627 に答える
0

時間を割いていただきありがとうございます。ブールキーの値を読み取るためのコードが1回だけ呼び出されることに気づきましNSUserDefaultsviewDidLoad:)

そのコード行をに移動するviewWillAppearと、すべてが期待どおりに機能します。

于 2013-01-12T06:29:56.020 に答える