rootController.viewのサブビューとして追加されたlabel.textに文字列を渡したいのですが:
@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を対象としたものではありません。なぜそれが機能しないのか考えてみてください。