最近又刚刚翻过头来写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才会监听到