我想将字符串传递给label.text作为rootController.view的子视图添加:
@implementation MainViewController //the rootController
@synthesize leftLabel;
- (void)viewDidLoad {
[super viewDidLoad];
leftLabel = [[UILabel alloc] initWithFrame:CGRectMake(100.0, 558.0, 250.0, 30.0)];
leftLabel.font = [UIFont systemFontOfSize:20.0];
leftLabel.textAlignment = UITextAlignmentCenter;
leftLabel.textColor = [UIColor whiteColor];
leftLabel.backgroundColor = [UIColor clearColor];
leftLabel.text = @"Some text";
[self.view addSubview:leftLabel];
}
- (void)updateLabel:(NSString *)aText {
leftLabel.text = aText;
}
消息在另一个ViewController中发送...
NSArray *viewControllers = [self.navigationController viewControllers];
MainViewController *textTarget = (MainViewController *)[viewControllers objectAtIndex:0];
[textTarget updateLabel:@"Hello"];
但是它永远不会到达rootController并且不会被调用。另一个ViewController发送其他所有到达的消息。但是,不是针对rootController的那个。知道为什么它不起作用吗?
最佳答案
如果在发送消息时未将VC推送到导航控制器,则self.navigationController
返回nil,然后所有其他方法返回nil,从而使所有调用均无效。