我有一个设置屏幕,我在其中设置应用程序的单位。用户可以从主屏幕进入设置屏幕,选择所需的单位后,设置屏幕将被取消。
当用户返回主屏幕时,我想隐藏并显示两个UITextField。
我在viewDidLoad
和viewDidAppear
中尝试了以下代码但不起作用:
textBox1.hidden = YES;
textBox2.hidden = NO;
这可能是微不足道的,但任何帮助都表示赞赏。感谢。
更新
我已使用Sugue
将“设置”屏幕与push
相关联,并使用[self.navigationController popViewControllerAnimated:YES];
关闭设置屏幕,这会将用户带回主屏幕。现在,我需要根据设置刷新屏幕控制,但它无法正常工作
答案 0 :(得分: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秒内,如果一切正确连接,您将看到更改。
答案 1 :(得分:0)
将以下bool设置为yes或no(在设置屏幕中)。
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];
在第一个viewcontroller中检索它:
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;
}
这将使更改成为永久更改,直到您更改为止。猜猜那就是你要找的东西。
答案 2 :(得分:0)
由于设置文本不起作用,我猜你的IBOutlets可能搞砸了。要重新执行它们,请执行以下操作:
您可以看到我有一个名为txtCaseID
的IBOutlet集
确保对两个textBox都执行此操作。 如果您需要任何其他帮助,请告诉我 -
答案 3 :(得分:0)
感谢您抽出宝贵的时间..我刚刚意识到我的NSUserDefaults
读取布尔值的值的代码是viewDidLoad
,只能调用一次:)
我将这行代码移到viewWillAppear
,一切都按预期工作!