文档章节

iOS 开发各种传值

 寂寞ls
发布于 2016/06/22 16:39
字数 447
阅读 37
收藏 0

一. 属性传值(正向):

1. 在第二个界面声明属性
@property(nonatomic,strong)NSString*str;

2. 在第一个界面执行跳转时赋值
second.str=@"属性传值";

3. 取值
nslog(@"%@",str);

二. Block传值(反向)

//1 第二个界面.h文件定义block
@property(nonatomic,assign)void(^block)(NSString*);
//2 第二个界面.m文件赋值
self.block(@"block传值");
//3 第一个界面.m文件调用
SecondViewController*second=[[SecondViewController alloc]init];
    second.block=^(NSString*value){
        NSLog(@"%@",value);
    };

 

二. 代理传值(正向传值为例):

/*1*/在FirstViewController.h中
#import <UIKit/UIKit.h>

// 声明协议
@protocol PassWordDelegate

-(void)passWordDelegate:(NSString*)str;

@end

@interface FirstViewController : UIViewController
// 设置代理属性
@property(nonatomic,retain)id<PassWordDelegate>delegate;

@end


/*2*/在FirstViewController.m中
#import "SecondViewController.h"

//点击方法
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    SecondViewController*second=[[SecondViewController alloc]init];
    self.delegate=second;//指定代理
    [self.delegate passWordDelegate:@"代理传值"];//代理传值
    
    [self presentViewController:second animated:NO completion:nil];
}

/*3*/遵循协议

/*4*/在SecondViewController.m中
//执行协议方法,接收传过来的值
-(void)passWordDelegate:(NSString *)str
{
    NSLog(@"%@",str);
}

三 单例传值:

单例传值可以理解为定义一个全局变量进行传值

//1 新建一个单例类,在.h文件中
#import <Foundation/Foundation.h>

@interface Singleton : NSObject
//声明属性(可设置多个属性)
@property(nonatomic,strong)NSString*passData;

+(instancetype)sharedSingleton;

@end


//2 在.m文件中初始化单例
static Singleton*singleton=nil;
//创建单例
+(instancetype)sharedSingleton{
    if (singleton==nil) {
        singleton=[[Singleton alloc]init];
    }
    return singleton;
}


//3 赋值
    NSString*str=@"单例传值";
    Singleton*single=[Singleton sharedSingleton];
    single.passData=str;


//4 取值
    Singleton*single=[Singleton sharedSingleton];
    NSLog(@"***%@",single.passData);

四 通知:

//一:发送通知
//字典
NSDictionary*dic=@{@"a":@"1",@"b":@"2",@"c":@"3"};
//发送通知
[[NSNotificationCenter defaultCenter]postNotificationName:@"通知" object:nil userInfo:dic];

//二: 接收消息
//注册通知(等待接收消息)
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(value:) name:@"通知" object:nil];
-(void)value:(NSNotification*)sender{
    NSLog(@"%@",sender.userInfo);
    //注意关闭通知,否则下次监听还会收到这次的通知
    [[NSNotificationCenter defaultCenter]removeObserver:self];
}

 

© 著作权归作者所有

上一篇: Xcode创建项目
粉丝 0
博文 35
码字总数 11408
作品 0
石家庄
程序员
私信 提问
IOS学习,最简单的表格应用程序,学习,列出博客

IOS编程浅蓝教程,这是博客地址http://www.cnblogs.com/haichao/category/425378.html IOS编程浅蓝教程:锲子 IOS编程浅蓝教程(一)先决条件:开始iOS编程的必要准备 IOS编程浅蓝教程(二) Hel...

andy521zhu
2015/01/17
183
0
ReactNative与iOS原生交互方式汇总

前言 最近用RN开发SDK,涉及RN与iOS各种交互。 有些交互比如用iOS原生切换多个RN页面,以及iOS调用RN的方法,按照网上的方法调不通,一度不知如何是好,网上资料比较少。 于是自己看RN源码分...

大灰狼的小绵羊哥哥
2018/11/13
0
0
2018 iOS 面试题大全(补充完整版)

原文地址:2018 iOS 面试题大全 由于原作者并没有继续更新,这里我转过来继续更新下 这个栏目将持续更新--请iOS的小伙伴关注! 1、iOS 应用导航模式有哪些? 2、iOS 中持久化方式有哪些? 3、...

Theendisthebegi
2018/11/15
0
0
《小印记》源码分享--极光推送服务器篇

笔者这几天刚完成《小印记》的推送功能,今天特分享一下在做的过程中实际解决的问题。如果读者学到了有用的东西,希望能前往App Store下载《小印记》支持一下笔者,谢谢! 《小印记》iOS源码...

_子墨
2017/03/21
94
0
都说iOS市场不行了,现在学还有前途吗?

在近一段时间里,笔者会经常听到在职iOS开发人员的各种吐槽,各种无奈,各种对于iOS市场唱衰,更是在某度搜索引擎上随便一点iOS就是各种负面新闻,事实上,经过笔者的一番了解,断定其实你们...

_小迷糊
2018/10/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

SpringBoot Actuator监控应用

微服务的特点决定了功能模块的部署是分布式的,大部分功能模块都是运行在不同的机器上,彼此通过服务调用进行交互,前后台的业务流会经过很多个微服务的处理和传递,出现异常如何快速定位便成...

zw965
22分钟前
4
0
高性能最终一致性框架Ray之基本概念原理

一、Actor介绍 Actor是一种并发模型,是共享内存并发模型的替代方案。 共享内存模型的缺点: 共享内存模型使用各种各样的锁来解决状态竞争问题,性能低下且让编码变得复杂和容易出错。 共享内...

程序员修BUG
23分钟前
4
0
如何去掉子集合功能中的按钮?

解决方案: 1、找到子集合字段 2、打开字段详细信息,在辅助配置里面进行配置 加入JEPaaS技术交流群,了解更多

JEPaaS云平台
24分钟前
5
0
创龙TI KeyStone C66x多核定点/浮点DSP TMS320C665x + Xilinx Artix-7 FPGA处理器;

广州创龙结合TI KeyStone系列多核架构TMS320C665x及Xilinx Artix-7系列FPGA设计的TL665xF-EasyEVM开发板是一款DSP+FPGA高速大数据采集处理平台,其底板采用沉金无铅工艺的6层板设计,适用于高...

Tronlong创龙
26分钟前
5
0
hbuilder打包常用android权限配置

常用android权限配置 - 开启相机权限 - 允许程序通过WiFi或移动基站的方式获取用户错略的经纬度信息 - 允许程序通过GPS芯片接收卫星的定位信息 - 允许程序获取模拟定位信息,一般用于帮助开发...

小草先森
27分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部