1

以下にプログラムの概要を説明しますが、新しいビュー コントローラー (タブ バー ビューではない) を押すと、ステッパーで値を選択し、ボタンをクリックして戻ります。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

4

2 に答える 2

1

コードを見てください。FirstViewControllerTabBarControllerの識別子として指定しています。あなたが間違っているかもしれません

FirstViewController *fvc = [storyboard instantiateViewControllerWithIdentifier:@"TabBarController"]; // Here check the identifier
fvc.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

self.firstViewData = fvc;
于 2013-05-31T11:26:13.987 に答える