情景描述:

      1. 有两个viewController,一个是A,一个是B。

      2.  A,B上各有一个按键,点击它们后分别会跳向对方。

      3.  想要实现在B中返回A的时候可以更新A中的数据。

 

代理实现:

      1. 在B.h中声明一个代理协议(行15-19),在协议中定义要被代理的方法(行17);

      2. 在前面引用此协议(行1)

      3. 声明代理属性(行4,8)

        

 1 @protocol SecondViewControllerDelegate;
 2 @interface secondViewController : UIViewController {
 3     
 4     id<SecondViewControllerDelegate> delegate;
 5     
 6 }
 7 
 8 @property(nonatomic,retain) id<SecondViewControllerDelegate> delegate;
 9 
10 -(IBAction)btn_back:(id)sender;
11 
12 
13 @end
14 
15 @protocol SecondViewControllerDelegate
16 
17 -(void)secondViewControllerDidFinish:(secondViewController *) controller;
18 
19 @end

  4. B.m中的按键实现

 

-(IBAction)btn_back:(id)sender{
    
    [self.delegate secondViewControllerDidFinish:self];
    
}

 

   A.h中的内容

 

 

 1 #import "secondViewController.h"
 2 
 3 @interface testDelegate03ViewController : UIViewController<SecondViewControllerDelegate> {
 4     
 5 }
 6 @property(nonatomic,retain) IBOutlet UILabel *lb_show;
 7 -(IBAction)btn_go:(id)sender;
 8 
 9 -(void)secondViewControllerDidFinish:(secondViewController *)controller;
10 
11 @end

5. 使用前面定义的代理(行3)

6. 声明代理方法(行9)

7. A.m中按键的实现,设置代理(行4)

 

1 -(IBAction)btn_go:(id)sender{
2     
3     secondViewController *controller=[[secondViewController alloc]initWithNibName:@"secondViewController" bundle:nil];
4     controller.delegate=self;
5     controller.modalTransitionStyle=UIModalTransitionStyleFlipHorizontal;
6     [self presentModalViewController:controller animated:YES];
7     [controller release];
8     
9 }

 

8. 代理方法的实现

 

1 -(void)secondViewControllerDidFinish:(secondViewController *)controller{
2     
3     [self dismissModalViewControllerAnimated:YES];
4     [lb_show setText:@"代理成功"];
5     
6 }

 

效果:

    在B中调用代理方法,而在A中实现了此方法,这样就达到了参数传递的效果

 

 

 

posted on 2011-11-07 10:55  晃晃悠悠  阅读(320)  评论(0)    收藏  举报