0

私は、モーダルに提示されたビューを却下するために、私が初めて使用する委任を使用しようとしています。私はそれをここに見られるアップルのドキュメントの線に沿って動作させようとしています。これまでのところ、私のコードは次のとおりです。

  1. 両方のビューをストーリーボードに配置し、最初のビューをモーダルセグエで2番目のビューに接続します。(view2へのセグエは正常に機能します)

  2. 返されたときに呼び出す2番目のviewcontroller/createメソッド内にデリゲートを作成します。

    //inside of view2ViewController.h
    @class view2ViewController;
    @protocol view2ViewControllerDelegate <NSObject>
    -(void)goBack:(OptionsViewController *)controller;
    @end
    
    @interface OptionsViewController : UIViewController
    @property (nonatomic, weak) id <view2ViewControllerDelegate>delegate;
    - (IBAction)return:(id)sender;//connected to button
    @end
    
  3. view1ViewControllerにデリゲートを実装する@interface view1ViewController : UIViewController <view2ViewControllerDelegate>

  4. view1Controller.mにデリゲートメソッドgoBackのコードを記述します

    -(void)goBack:(view2ViewController *)controller{
    [self dismissViewControllerAnimated:YES completion:nil];}
    
  5. view2ViewController.mにreturnメソッドのコードを記述して終了します

    - (IBAction)return:(id)sender {
    [self.delegate goBack:self];}
    

このコードがどこで間違っているのかわかりません。returnメソッドが呼び出されますが、goBackは呼び出されません。私は開発者向けのドキュメントを読み、理解したと思いましたが、そうではないと思います...

PS StackOverflowのすべてのクラス/変数名の名前をより一般的なものに変更しました。そのため、変数名のスペルにわずかな不一致がある場合は、1つ間違って入力したことが原因である可能性があります。

4

1 に答える 1

1

私が試すことができるベストショット-

View2ViewControllerのデリゲートとしてSplashViewControllerを割り当てたことを確認してください。

コードによって、(SplashViewController mファイルで)次のように実行できます。

view2ViewController.delegate = self;

または、ストーリーボードで行うことができます。

ところで 、関数を「return」と呼ぶのは良い考えではありません。

于 2012-07-13T16:27:07.293 に答える