为什么我的自定义iPhone委托不起作用?

时间:2010-01-27 22:58:10

标签: iphone objective-c xcode delegates

我只是想构建一个简单的委托,它成功编译,但它现在似乎没有做任何事情。 请查看下面的代码,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委托

2 个答案:

答案 0 :(得分:1)

如何分配SecondViewController的委托属性? 这是我遗失的最后一部分......

答案 1 :(得分:0)

两件事:

  1. 你的IBAction方法myMethod,如果它真的是一个IBAction,需要采取一个论点: -(IBAction)myMethod:(id)sender 在责备委托模式之前,请确保调用myMethod(设置断点并查看)。

  2. 您的委托方法似乎被声明为将委托类型作为参数,而不是您似乎希望在那里传递的viewController。这可能都被id类型所掩盖,但我想你可能想重新声明这些声明。