为UIViewController制作一个委托

Col*_*ole 4 iphone model-view-controller delegates

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

mergeConfig *view = [[mergeConfig alloc] initWithNibName:@"mergeConfig" bundle:nil];
Run Code Online (Sandbox Code Playgroud)

我试图[view setDelegate:self];以在上述苹果的开发者页面,但我expectably模型视图没有setDelegate方法.

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

Tim*_*ean 5

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

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

@implementation mergeConfig
@synthesize delegate;
@end
Run Code Online (Sandbox Code Playgroud)

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

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

@protocol MyDelegateProtocol
- (void)delegateMethod;
@end

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

@implementation mergeConfig
@synthesize delegate;
@end
Run Code Online (Sandbox Code Playgroud)