美文网首页
delegate传值

delegate传值

作者: NapoleonY | 来源:发表于2017-09-01 11:33 被阅读115次

楔子

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
  1. 在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];
}
  1. 在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];这两行代码。

参考

两个ViewController间传值

相关文章

  • oc中使用delegate和block进行反向传值

    delegate传值 block实现传值

  • iOS页面传值

    常用 + 代码 属性传值 方法传值 Block Delegate NSNotificationCenter传参 N...

  • iOS 传值的方式的区别

    1.属性传值。 2.block传值。 3.代理传值(delegate) 4.通知传值(notification)。...

  • iOS 传值

    页面传值 NSNotification Delegate Block 单例 一、 页面传值 最简单直接的传值方法 ...

  • delegate传值

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

  • Delegate传值

    这篇文章的demo是我以前一个项目里抽出来的,可以用于一个项目中不同数据源的PickView。风格统一,废话不多说...

  • iOS 常用传值

    iOS 传值(Delegate NSNotification Block Singleton NSUserDefa...

  • iOS 开发中 代理传值

    A 向 B 传值: A要传值,就要告诉别人我可以传值。 A 要声明这个协议,定义遵守该协议的delegate属性。...

  • IOS 界面之间传值总结

    iOS页面间传值的方式(NSUserDefault/Delegate/NSNotification/Block/单...

  • delegate反向传值

    进行反向传值:1:首先是创建viewcontroller页面也就是第一个页面;2:其次是创建第二个页面我这里定义为...

网友评论

      本文标题:delegate传值

      本文链接:https://www.haomeiwen.com/subject/gkdqjxtx.html