0

我有一个设置屏幕,在其中设置应用程序的单位。用户可以从主屏幕转到设置屏幕,在选择所需的单位后,设置屏幕被关闭。

当用户返回主屏幕时,我想隐藏和显示两个 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];

第二:确保网点不为空

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

第三:尝试一些这样的代码

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

感谢您抽出宝贵的时间.. 我刚刚意识到我的代码用于读取布尔键的值NSUserDefaultsviewDidLoad其中只被调用一次:)

我把那行代码移到了viewWillAppear,一切都按预期工作!

于 2013-01-12T06:29:56.020 回答
0

由于设置文本也不起作用,我猜你的 IBOutlets 可能搞砸了。要重新执行它们,请执行以下操作:

  1. 首先进入您的故事板并放大您正在处理的视图控制器
  2. Control + 单击您的 UITextView 或 UITextField,您将看到类似的菜单: 在此处输入图像描述

您可以看到我有一个名为 txtCaseID 的 IBOutlet 集

  1. 如果您看到像我一样设置的插座,请继续并单击 X 将其删除
  2. 要重新添加此插座,请打开协助编辑器以查看情节提要和您的 .h
  3. Control + Click & 从 Storyboard 中的 textBox 拖动到您之前在 .h 中创建的 IBOutlet,如下所示:

在此处输入图像描述

确保对两个文本框都这样做。如果您需要任何其他帮助,请告诉我——

于 2013-01-11T17:23:37.627 回答
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 回答