Objective c 目标C:如何访问另一个ViewController并更改其中的UI?
我正在尝试导航到另一个视图并更改其UI 我设法访问控制器方法“hideElements”, 但是所有的元素都是“NIL”,它不会改变任何东西 (当我在没有导航的情况下访问ViewController.m regular时,属性不是NIL) 这是为什么?我如何解决它? ViewController.m:Objective c 目标C:如何访问另一个ViewController并更改其中的UI?,objective-c,Objective C,我正在尝试导航到另一个视图并更改其UI 我设法访问控制器方法“hideElements”, 但是所有的元素都是“NIL”,它不会改变任何东西 (当我在没有导航的情况下访问ViewController.m regular时,属性不是NIL) 这是为什么?我如何解决它? ViewController.m: - (void)hideElements:(NSString *)identifier{ [_agreeButton setHidden:TRUE]; [_noThankButto
- (void)hideElements:(NSString *)identifier{
[_agreeButton setHidden:TRUE];
[_noThankButton setHidden:TRUE];
[self cleanButtons];
}
ViewController2.h
#import "ViewController.h"
@property (nonatomic) ViewController *myViewController;
ViewController2.m
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSString *identifire = [sender text];
ViewController* vc = (ViewController*)segue.destinationViewController;
[vc hideElements:identifire];
}
屏幕截图:
问题似乎是在调用
隐藏元素时,视图控制器的视图(以及包括插座的子视图)尚未创建。所以你可以做几件事
(一)
(二)
ViewController2.m
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
NSString *identifire = [sender text];
ViewController* vc = (ViewController*)segue.destinationViewController;
vc.shouldHideElements = YES;
}
ViewController.m
- (void)viewDidLoad {
if (self.shouldHideElements) {
[self hideElements];
}
}
元素是从Outlet创建的吗?是的,它们是在Storyboard中创建的按钮我不明白为什么要在prepareForSegue
中实例化视图控制器。您应该能够通过segue
的destination
属性访问它。您能给我一个例子吗?ViewController*vc=(ViewController*)segue.destination代码>我添加了[vc视图];在调用hideElements之前,请确保工作正常!
- (void)viewDidLoad {
if (self.shouldHideElements) {
[self hideElements];
}
}