我看了一遍,发现很多人有类似的问题,但我仍然无法让我的代表工作。我想弹出一个模型视图控制器,然后在视图中调用一个方法,使模型视图要求它解除它。所以我有这句话:
mergeConfig *view = [[mergeConfig alloc] initWithNibName:@"mergeConfig" bundle:nil];
我在apple's developer pages,上正在尝试[view setDelegate:self];
,但我的模型视图可能没有setDelegate方法。
所以我想知道的是,我如何获得它以便我可以设置一个委托?然后,一旦我这样做,它是否只是自动将调用方法调用到父视图中具有相同名称的方法? Apple的页面没有说明要在模型视图控制器中放入什么代码。
答案 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];
即可。除非您需要将信息传回链中,否则无需代表。