【发布时间】:2012-07-13 16:16:05
【问题描述】:
我正在尝试使用我不熟悉的委托来消除模态呈现的视图。我试图让它按照看到的苹果文档here 工作。到目前为止我的代码如下:
将两个视图放在情节提要上,使用模态 segue 将第一个视图连接到第二个视图。 (到 view2 的 segue 工作正常)
-
在第二个视图控制器中创建委托/创建返回时调用的方法:
//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 在 view1ViewController 中实现委托
@interface view1ViewController : UIViewController <view2ViewControllerDelegate>-
在 view1Controller.m 中为委托方法 goBack 编写代码
-(void)goBack:(view2ViewController *)controller{ [self dismissViewControllerAnimated:YES completion:nil];} -
通过在 view2ViewController.m 中编写返回方法的代码来完成
- (IBAction)return:(id)sender { [self.delegate goBack:self];}
我不确定这段代码哪里出错了。返回方法被调用,但 goBack 没有被调用。我确实阅读了开发者文档,并认为我理解了,但我想不是......
PS 我将 StackOverflow 上的所有类/变量名称都更改为更通用的名称,因此如果变量名称拼写之间存在细微差异,可能是因为我输入了一个错误。
【问题讨论】:
-
你这样做是为了练习吗?因为否则 BY FAR 关闭模态视图控制器的最简单方法是将返回按钮链接到使用 [self dismissModalViewController animated:YES]; 的 ib 动作
-
是的,基本上我这样做是为了练习。我需要稍后使用它来将信息传递回我的另一个视图,但我开始很简单。我也需要它来处理一些非模态的转场
标签: objective-c ios uiviewcontroller delegates protocols