以下にプログラムの概要を説明しますが、新しいビュー コントローラー (タブ バー ビューではない) を押すと、ステッパーで値を選択し、ボタンをクリックして戻ります。FilterViewController から FirstViewController にステッパー値を送信しようとしています。
プログラム:
タブ バー コントローラーの最初のタブであるアプリが読み込まれFirstViewController
ます。画面の左上には、FilterViewController を開くボタン (虫眼鏡) があります。
FilterViewController には、ステッパー、ラベル (ステッパーの値を表示する)、およびボタンがあります。ボタンをクリックすると、ステッパーの値が変数に保存されます。これを FirstViewController に渡す必要があります。
FirstViewController.h (FilterViewController からアクセスするプロパティ)
@interface FirstViewController : UIViewController
{
NSString *passedData;
}
@property(nonatomic, retain) NSString *passedData;
FirstViewController.m (新しいビュー コントローラーをプッシュするコード、プロパティも実装で合成されます)
- (IBAction)searchOptions:(id)sender {
FilterViewController *ctrl = [[FilterViewController alloc] init];
[UIView transitionFromView:self.view toView:ctrl.view duration:1 options:UIViewAnimationOptionTransitionCurlUp completion:nil];
self.filterViewController = ctrl;
[self.navigationController pushViewController:self.filterViewController animated:NO];
}
FilterViewController.m (値を保存して FirstViewController に渡すコード)
- (IBAction)backToMap:(id)sender {
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
FirstViewController *fvc = [storyboard instantiateViewControllerWithIdentifier:@"TabBarController"];
fvc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
self.firstViewData = fvc;
fvc.passedData = @"yo";
//firstViewData.passedData = @"hello test test test";
[self presentViewController:fvc animated:YES completion:nil];
}
これを実行すると、次のように言ってクラッシュします: [UITabBarController setPassedData:]: unrecognized selector sent to instance