Delegate使用方法

本文介绍了如何利用Delegate在程序中实现两个视图之间的值传递。首先,讲解了定义Delegate的步骤,接着阐述在代理类的.h文件声明遵守协议,并在.m文件中实现相关方法的详细过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在程序中我们往往需要两个视图之间传值,用delegate可以解决这个问题。


(1)定义delegate

#import <UIKit/UIKit.h>

@protocol SetPhotoDelegate <NSObject>

- (void)setPhoto:(UIImage *)photo;

@end

@interface PhotoDelegate : NSObject

@end

(2)在代理人的.h文件中声明遵守该协议

#import "PhotoDelegate.h"

@interface ViewController : UIViewController<SetPhotoDelegate>

然后在.m文件中实现协议中的方法

- (void)setPhoto:(UIImage *)photo
{
    //委托人实现委托方法
    //显示照片
    self.firstImageView.image = photo;
}

最后在初始化委托人的地方,将代理人设置为自己

PhotoPickerViewController *photoPicker = [self.storyboard instantiateViewControllerWithIdentifier:@"PhotoPicker"];
            
//将自己设为PhotoPickerViewController的委托人
photoPicker.delegate = self;
            
[self presentViewController:photoPicker animated:YES completion:NULL];

(3)在委托人头文件文件中定义

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

@interface PhotoPickerViewController : UIViewController

//这是用assign防止引起循环引用
@property(nonatomic, assign) NSObject<SetPhotoDelegate> * delegate;

@end


调用代理方法

- (IBAction)clickDoneButton:(id)sender
{
    //通过delegate调用代理方法
    [self.delegate setPhoto:selectedImage];
    
    [self dismissViewControllerAnimated:YES completion:nil];
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值