欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

代理传值 delegate

程序员文章站 2022-07-04 11:07:23
...

在第二页面中.h 文件写协议

//协议方法
@class AddViewController;
@protocol   AddViewControllerDelegate <NSObject>
//声明协议方法.在创建页面时,应注意首字母大写的问题
//传值没有限制
@optional
-(void)addViewController:(AddViewController *)addViewController withTeacher :(Teacher *)teacher;
@end

@interface AddViewController : UIViewController
//定义协议
@property (nonatomic,strong)id<AddViewControllerDelegate> delegate;
@end

在.m 文件中,在点击传值方法中
//判断代理方法是否响应

 if ([self.delegate respondsToSelector:@selector(addViewController:withTeacher:)]) {
        //执行代理方法
        Teacher *t=[Teacher new];
        //赋值
        t.name=self.nameField.text;
        t.number=self.numberField.text;
        [self.delegate addViewController:self withTeacher:t];
    }

// 回到第一页面,签订你定义的协议,在跳转方法中,要 delegate=self; 类似于表格,然后开始写你的代理方法

 //代理方法
-(void)addViewController:(AddViewController *)addViewController withTeacher:(Teacher *)teacher{
    [array addObject:teacher];
    [table reloadData];
  }