0

我正在尝试使用我不熟悉的委托来消除模态呈现的视图。我试图让它按照这里看到的苹果文档的方式工作。到目前为止,我的代码如下:

  1. 将两个视图放在情节提要上,将第一个视图连接到第二个视图与模态 segue。(到 view2 的 segue 工作正常)

  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 中为返回方法编写代码来完成

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

我不确定这段代码哪里出错了。返回方法被调用,但 goBack 没有被调用。我确实阅读了开发人员文档,并认为我理解了,但我想不是......

PS 我将 StackOverflow 上的所有类/变量名称更改为更通用的名称,因此如果变量名称拼写之间存在细微差异,可能是因为我输入了一个错误。

4

1 回答 1

1

我能尝试的最好的镜头 -

确保将 SplashViewController 分配为 view2ViewController 的委托。

通过代码,您可以这样做(在 SplashViewController m 文件中):

view2ViewController.delegate = self;

或者你可以在故事板上做。

顺便说一句 ,我不确定调用你的函数“return”是个好主意。

于 2012-07-13T16:27:07.293 回答