irpas技术客

ios delegate传值_灿烂i

网络投稿 4155

楔子 iOS里不同View之间传值有多种方式,常用的一种是delegate。具体如下:

概述 delegate典型应用场景如下:由OneView进入TwoView,在TwoView里输入值后,传回到OneView中。工程文件结构如下 步骤 1.定义delegate Xcode-File-New-File选择Objective-c File,点击next,在File Type:中选择Protocol,next后即可创建一个delegate。

#import <Foundation/Foundation.h> @protocol PassValueDelegate <NSObject> - (void)passValue:(NSString *)string; @end

2.在OneViewController中实现delegate

OneViewController.h

#import <UIKit/UIKit.h> #import "PassValueDelegate.h" @interface OneViewController : UIViewController<PassValueDelegate> @end

OneViewController.m

- (void)mybuttonPressed { TwoViewController *twoVC = [[TwoViewController alloc] init]; twoVC.delegate = self;//设置第二个ViewController的delegate为self [self.navigationController pushViewController:twoVC animated:YES]; }

3.在TwoViewController中国年声明一个遵循PassValueDelegate的Object对象

TwoViewController.h

#import <UIKit/UIKit.h> #import "PassValueDelegate.h" @interface TwoViewController : UIViewController @property (nonatomic, weak) NSObject<PassValueDelegate> *delegate; @end

TwoViewController.m

- (void)mybuttonPressed { [self.delegate passValue:self.myTextField.text]; [self.navigationController popViewControllerAnimated:YES]; }

注意:以上实现了使用delegate在两个VieController之间传值,这种场景一般应用在进入子界面输入信息后传回给第一个界面的情况,比如修改用户个人信息,点击修改进入修改界面,修改完后回到显示界面显示修改后的结果。需要重点注意步骤2中的twoVC.delegate = self;和步骤3中的[self.delegate passValue:self.myTextField.text];这两行代码。


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #iOS #delegate传值 #File点击next在File #Type中选择Protocol