iOS:rootController中的方法不会被调用

时间:2012-09-08 12:43:52

标签: ios methods uiviewcontroller uilabel

我想将一个字符串传递给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的那个。知道为什么它不起作用吗?

1 个答案:

答案 0 :(得分:1)

如果您的VC在发送消息时没有被推送到导航控制器,则self.navigationController返回nil,然后所有其他方法返回nil,使所有呼叫无效。