1

ここに画像の説明を入力してください

上の写真は私のアプリのスキーマを示しています..UIViewController3のコンテンツを1と2で表示するカスタムビューを作成しました。

VC1と2でカスタムビューに触れたときにVC4に直接ジャンプしたい。

カスタムビューはUIViewでしたが、Touchイベントを受信するためにInterfaceBuilderでUIControlに変更しました。

カスタムビュークラスのtoucheventメソッドで次のコードを使用しました

    - (IBAction)customViewTouched:(id)sender {

        VC4 *nextController = [[VC4 alloc] initWithNibName:@"VC4" bundle:nil];

        UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:nextController];

       [self presentViewController:navigationController animated:YES completion:nil];

        navigationController.navigationBar.tintColor = [UIColor blackColor];
        navigationController.navigationBar.topItem.title = @"My Title";



        navigationController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc]
 initWithTitle:@"Back" style:UIBarButtonItemStyleBordered target:self action:@selector(cancel)];
        navigationController.navigationItem.hidesBackButton = FALSE;

       // navigationController.navigationBar.backItem.title = @"back";

    }

  1. VC2でカスタムビューがタッチされたとき(正しく呼び出されます)-VC4がポップしますが、カスタムビュー内でのみ発生します。

  2. また、ナビゲーションバーに戻るボタンが表示されません。(他のstackoverflowの回答で示唆されているように、ViewDidLoadでカスタムビューのタイトルも設定してみました)

3. customViewのサイズのダミーUIButtonをVC1に作成し、その中にcustomViewを配置して、VC1自体でタッチイベントを処理できるようにします。これにより、パフォーマンスの問題が発生しますか?

[myCustomViewButton addTarget:self action:@selector(myEventHandler) forControlEvents: UIControlEventTouchUpInside];

上記のコードを使用すると、エラーはスローされませんが、「UIViewController」クラス名を使用すると、「self」ではなくaddTargetでメソッドmyEventHandlerが呼び出されることはなく、エラーがスローされます。

私はこれを進める方法がわかりません..どんな助けもありがたいです:)

4

1 に答える 1

0

言及されていないVC3がカスタムビューを管理していると思います:

[self presentVC] を [self.parentVC presentVC] に変更します。

VC4 を提示している VC3 は、VC1 と VC2 に子として埋め込まれています。

于 2012-11-20T11:12:42.347 に答える