为UIViewController制作一个委托

时间:2011-08-17 02:52:51

标签: iphone model-view-controller delegates

我看了一遍,发现很多人有类似的问题,但我仍然无法让我的代表工作。我想弹出一个模型视图控制器,然后在视图中调用一个方法,使模型视图要求它解除它。所以我有这句话:

mergeConfig *view = [[mergeConfig alloc] initWithNibName:@"mergeConfig" bundle:nil];

我在apple's developer pages,上正在尝试[view setDelegate:self];,但我的模型视图可能没有setDelegate方法。

所以我想知道的是,我如何获得它以便我可以设置一个委托?然后,一旦我这样做,它是否只是自动将调用方法调用到父视图中具有相同名称的方法? Apple的页面没有说明要在模型视图控制器中放入什么代码。

2 个答案:

答案 0 :(得分:5)

您需要在自定义视图控制器上定义委托,如下所示:

@interface mergeConfig {
    id delegate;
}
@property (nonatomic, assign) id delegate;        
@end

@implementation mergeConfig
@synthesize delegate;
@end

然后,在视图控制器的类中的其他地方,您可以调用代理所需的任何方法。

我个人喜欢通过定义我的代表遵守的协议来改进上述内容,如下所示:

@protocol MyDelegateProtocol
- (void)delegateMethod;
@end

@interface mergeConfig {
    id<MyDelegateProtocol> delegate;
}
@property (nonatomic, assign) id<MyDelegateProtocol> delegate;        
@end

@implementation mergeConfig
@synthesize delegate;
@end

答案 1 :(得分:0)

如果您只需要关闭模态视图控制器,只需在适当的时候调用[self.parentViewController dismissModalViewControllerAnimated:YES];即可。除非您需要将信息传回链中,否则无需代表。