我有A和B UIViewController
。控制器有按钮和文本视图,然后单击此按钮,它将转到B控制器。然后我点击B控制器,我回到A控制器。但是当我从B控制器回来时,我需要隐藏来自A控制器的textview。
B控制器:
-(void)A{
[self.navigationController popToRootViewController animated:YES];
}
答案 0 :(得分:1)
您正在使用poptoviewcontroller方法,因此在返回上一个控制器后,数据仍然存在。因此,在从A控制器导航到B控制器之前隐藏textview,这样当导航视图弹出到主视图时,textview将被隐藏
答案 1 :(得分:1)
尝试使用这样的... 有两种解决方案
1
- (void)viewDidLoad
{
[super viewDidLoad];
textview.hideen = NO;
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
textview.hidden = YES;
}
2。使用NSUserDefaults
中的密钥获取状态。我的意思是检查它是否来自B控制器。
答案 2 :(得分:1)
有很多选择:
在导航到下一个视图之前隐藏文本视图。
在viewwilldisappear方法中隐藏textview。
使用NSUserDefaults的密钥并检查它是否来自B控制器。
在appdelegate中声明变量并在B控制器中更改其值检查控制器中的值会根据结果隐藏textview。
您可以通过声明视图控制器并将其设置为naviagation控制器导航到另一个页面,然后您可以设置该控制器的属性。
答案 3 :(得分:0)
->write code in controller A
- (void)viewDidLoad { [super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(hideTextview) name:@“hidetextview” object:nil];
} - (void)hideTextview {
textview.hidden = YES;
}
->in controller B
[[NSNotificationCenter defaultCenter] postNotificationName:@" hidetextview" object:nil userInfo:nil];
}
答案 4 :(得分:0)
您可以做的最简单的事情是在导航到视图控制器B之前隐藏viewcontroller A中的文本视图,因此需要在
中添加代码- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
textview.hidden = YES;
}
OR
- (void)navigateToBController{
VCB *b = [[VCB alloc]init];
[self.navigationController pushviewController:b];
textview.hidden = YES;
}
如果您从A - >导航; B - > C然后在viewcontroller C中你导航到根视图控制器即A然后在这种情况下,我建议的是在NSUSerDefault中维护一个变量,它会告诉你它从哪个viewcontroller弹出,这样你就可以显示/隐藏你的textview。