object-c中delegate使用简单方法

最近又刚刚翻过头来写iPhone的代码


原来使用Xcode2版本,现在都4了

安装完Xcode4新建工程,我晕了.....(不解释了)


现在作为菜鸟,从头记笔记,先看看用处最多的delegate代理


首先是声明定义部分:

CContentViewController.h文件

@class CContentViewController;

@protocol CsContentViewDelegate

@required  //必需要实现的方法
- (void)CContentViewControllerDidFinish:(CContentViewController *)controller;


@end


@interface CContentViewController : UIViewController
{

  //成员变量
   
}

@property (assign, nonatomic)  id CContentViewDelegate delegate;

- (IBAction)back:(id)sender;

@end

CContentViewController.m文件

- (IBAction)back:(id)sender {
    //[self dismissModalViewControllerAnimated:YES];
    [self.delegate ChatsContentViewControllerDidFinish:self];
}


RootViewController.h文件

#import <UIKit/UIKit.h>
#import "CContentViewController.h"

@interface RootViewController : UIViewController 
<CContentViewDelegate;
{

}

- (IBAction)showCV:(id)sender;

@end

RootViewController.m文件

#import "RootViewController.h"
#import "AnimationViewController.h"
#import "CContentViewController.h"
#import <QuartzCore/QuartzCore.h>

@implementation RootViewController

- (IBAction)showCV:(id)sender {
    CContentViewController *controller = [[CContentViewController alloc]
                                           initWithNibName:@"CContentViewController"
                                           bundle:nil];
    self.title = @"首页";
    controller.delegate = self;  //设置委托的收听对象为RootViewController
    //[self presentModalViewController:controller animated:YES];    
    
    [self.navigationController pushViewController:controller animated:YES];
    
    CATransition *animation = [CATransition animation];
    [animation setDuration:0.3];
    [animation setType: kCATransitionMoveIn];
    [animation setSubtype: kCATransitionFromTop];
    [animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionDefault]];    
    
    [self.navigationController.view.layer addAnimation:animation forKey:nil];
    //[controller release];
}

#pragma mark - CContentView View
//实现委托中的方法
//RootViewController会监听到这个事件并执行。 

- (void)CContentViewControllerDidFinish:(ChatsContentViewController *)controller
{
    //[[self parentViewController] dismissModalViewControllerAnimated:YES];
    [[self navigationController]; popViewControllerAnimated:YES];
}

@end


其中重点的地方是

controller.delegate = self; //设置委托的收听对象为RootViewController

当CContentViewController发CContentViewControllerDidFinish消息RootViewController才会监听到



你可能感兴趣的:(xcode,iPhone,Class,animation,interface,XCode4)