我只是想构建一个简单的委托,它成功编译,但它现在似乎没有做任何事情。 请查看下面的代码,FirstViewContoller和SecondViewController都有单独的xib文件,SecondViewController当然有一个连接到myMethod的按钮。
我一直在学习使用Objective c和iPhone SDK几个月的方法,我一直在使用一本书和lynda.com教程来帮助,实际上我使用xcode模板复制了大部分代码实用程序应用程序,我相信我理解这里发生了什么,但是有一些我错过了,因为按钮没有响应。
如果您需要更多信息,请询问。
非常感谢, 克里斯
SecondViewController.h
#import <UIKit/UIKit.h>
@protocol SecondViewControllerDelegate;
@interface SecondViewController : UIViewController {
id <SecondViewControllerDelegate> delegate;
}
@property (nonatomic, assign) id <SecondViewControllerDelegate> delegate;
-(IBAction) myMethod;
@end
@protocol SecondViewControllerDelegate
-(void)viewControllerDidFinish:(SecondViewController *)controller;
@end
SecondViewController.m
@implementation SecondViewController
@synthesize delegate;
-(IBAction) myMethod
{
[self.delegate viewControllerDidFinish:self];
}
//
@end
FirstViewController.h
@interface FirstViewController : UIViewController <SecondViewControllerDelegate>{
//
@end
FirstViewController.m
@implementation FirstViewController
-(void)viewControllerDidFinish:(SecondViewControllerDelegate *)controller
{
NSLog(@"delegate is being used");
}
//
@end
编辑 - 这是一篇旧帖子,但只是为了澄清我只是忘了在FirstViewController中分配SecondViewController委托
答案 0 :(得分:1)
如何分配SecondViewController的委托属性? 这是我遗失的最后一部分......
答案 1 :(得分:0)
两件事:
你的IBAction方法myMethod
,如果它真的是一个IBAction,需要采取一个论点:
-(IBAction)myMethod:(id)sender
在责备委托模式之前,请确保调用myMethod(设置断点并查看)。
您的委托方法似乎被声明为将委托类型作为参数,而不是您似乎希望在那里传递的viewController。这可能都被id类型所掩盖,但我想你可能想重新声明这些声明。