首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

NSNotificationCenter 通知使用方法详解你要知道KVC、KVO、Delegate、Notification都在这里

id object; //字典类型用户信息,用户可将需要传递数据放入该字典中 @property (nullable, readonly, copy) NSDictionary *userInfo;...id)anObject; /* 发送通知 aName注册通知名称 anObject接受通知对象 aUserInfo字典类型数据,可以传递相关数据 */ - (void)postNotificationName...视图中,NextViewController中包含一个输入框和一个按钮,用户在完成输入后点击按钮退出视图跳转回ViewController并在ViewController标签中展示用户填写数据,接下来看一下代码...(void)inputTextValueChangedNotificationHandler:(NSNotification*)notification { //从userInfo字典中获取数据展示标签中...,或是系统提供通知,我们无法预知这些通知是否是在主线程中发送,为了安全起见最好在需要更新UI使用GCD更新逻辑放入主线程执行。

2.2K60

函数响应式编程及ReactiveObjC学习笔记 (三)

另外也只能处理没有返回值代理方法 可以UITextview+RACSignalSupport.m里面看看, 也是类似这样用 - (RACDelegateProxy *)rac_delegateProxy...这里我们先说一个一会用到方法: map map方法,将会创建一个和原来一模一样信号,只不过新信号传递值变为了block(value)。...1, 这里就是把传递值从textFieldtext转变成为我们1 和 0; 然后有个特别的地方, 加入我们知道传递类型, 我们就可以直接把后面订阅block里面的参数类型直接改成我们知道类型...例如把id改为NSString *运行结果也是一样, 这个是RAC一个比较特别的地方 那么要实现上面的123 321可以这样写: RACChannelTerminal *terminalA..., 直接给大家一个例子: 大概效果我们在Controller中添加一个UITextField跟一个UIDatePicker, 然后获取他们RACChannelTerminal, UIDatePicker

86620
您找到你想要的搜索结果了吗?
是的
没有找到

Protocol与Delegate 使用方法详解你要知道KVC、KVO、Delegate、Notification都在这里

需要给委托对象传递信息或是想要从委托对象获取信息就可以调用相关方法,通过从委托获取数据这样方式可以数据与业务逻辑解耦,就像我们常使用UITableView或UICollectionView...具体代码如下: //上述视图AViewController,视图BNextViewController //NextViewController.h文件代码如下: #ifndef NextViewController_h...点击按钮跳转到NextViewController,在输入框输入Hello,World!,并点击按钮退出NextViewController后ViewController具体效果如下: ?...委托有两种方式,一种是代理delegate,对象有某些事件发生后需要交由委托对象处理,类似于上面的栗子,这种方式一般代理协议定义方法会包含一一些必要参数用于对象通知委托对象,返回值往往void。...还有一种是数据源dataSource,对象需要从委托对象中获取数据,此时在代理协议中声明方法就会有返回值,有时也会传递一定形参通知委托对象返回什么样数据数据流向如下图所示: ?

99890

IOS-导航路线_iphone导航

1.可以需要导航位置丢给系统自带APP进行导航 2.发送网络请求公司服务器获取导航数据, 然后自己手动绘制导航 3.利用三方SDK实现导航(百度) >点击开始导航获取用户输入起点和终点...1.发送请求苹果服务器获取导航路线信息 2.根据服务器返回路线信息自己绘制导航路线 代码1 1 // 2 // ViewController.m 3 // IOS_0403_利用系统App...方法, 就可以打开系统自带地图APP进行导航 103 // Items: 告诉系统地图APP要从哪哪 104 // launchOptions: 启动系统自带地图APP附加参数(导航模式/是否需要先交通状况...小时", route.distance / 1000, route.expectedTravelTime/ 3600); 131 132 // 3.绘制路线(本质: 往地图上添加遮盖) 133 // 传递当前路线几何遮盖给地图..., 地图就会根据遮盖自动绘制路线 134 // 系统开始绘制路线时会调用代理方法询问当前路线宽度/颜色等信息 135 [self.mapVIew addOverlay:route.polyline

45020

UI篇-UIResponder之事件传递和响应精析

响应者链:由一系列“下一个响应者”组成 其顺序如下: 1.iOS系统在处理事件,通过UIApplication对象和每个UIWindow对象sendEvent:方法事件以消息形式分发给具体处理此事件第一响应者...如果第一响应者没有进行处理,第一响应者事件处理事件责任传递下一个,更高级对象,即当前responder对象nextResponder。...3.类似地,视图层次中每个后续视图如果不处理事件都首先传递给它视图控制器(如果有的话),然后是它父视图。 4.最上层容器视图事件传递给UIWindow对象。...5.UIWindow对象事件传递给UIApplication单件对象。 6.如果应用程序找不到能够处理事件响应者对象,则丢弃该事件。 程序寻找能够处理事件对象,事件就在响应者链中向上传递。 ?...前一个方法使应用程序完全停止接收触摸事件消息,第二个方法则重启消息接收。某些时候,代码正在执行动画,可能希望关闭事件传递

2.4K30

关于OC代理问题:self.delegate = self

背景 最近作者在进行工程代码分析,经常看到这样代码: self.delegate = self //自己代理设置自己 于是心中产生了不少疑问,为什么会这样写?这样写是否是正确?...Delegate 模式其实就是 NSProxy 设计模式一种衍生版,它们共同特点可以理解都是传递对象消息,主要区别如下: 1....(如:UITextField等)情况下,因为我们无法获知内部消息是如何传递,只能通过代理对象获知消息。...UITextField delegate 设置自己(self.delegate = self),然而在使用 UITextField 控件,发现程序不响应了,过了几秒后程序出现闪退现象。...于是新建工程,写了一份一模一样代码(注:SGLimitedTextField 继承自 UITextField): @implementation ViewController - (void)viewDidLoad

1.4K20

iOS中storyboard故事板使用Segue跳转界面、传值

view controller按钮,在右侧第四个部分中把size设成想要即可: 现在我们来视图添加控件,考虑到我们需求,要能辨认当下在哪个界面,要可以在两个界面跳转,要可以设置和显示要传递值,...使用Segue在界面间传值: 我们在两个视图中都添加了TextField编辑输入框,这样我们可以在Page1页面中输入数据传递Page2显示,同样可以在Page2中输入数据回到Page1显示。...我们传值有两种方式,正好在两个传输过程中使用,先看第一个方法,实现从Page1传值Page2: 我们先在Page2中定义一个变量用来接收所传递值: // Page2.h文件中 @property...(weak, nonatomic) NSString *string; 然后在Page2.m文件中设定加载界面,刷新输入框内变量值: - (void)viewDidLoad {...自动调用。

1.4K20

1.注册或登录页面设计:UILabel,UIButton,UITextField

说明: 这里为了展现UITextField文本框关联键盘设置,这里把“密码”和“确定密码”关联键盘都设置数字键盘,实际应用中密码一般都允许数字或字母。 实现了键盘收回操作。...这里是method方法指定给新建这个confirmButton 85 [self.view addSubview:confirmButton]; 86 } 87 88 //收回键盘...alloc]initWithFrame:CGRectMake(20, 20, 130, 30)]; //输入框没有内容,水印提示 ,提示内容“用户名” //显示灰色字体,作为提示信息 text.placeholder...* 默认情况下,按钮高亮情况下,图像颜色会被画深一点,如果这下面的这个属性设置no, * 那么可以去掉这个功能 */...这里是method方法指定给新建这个confirmButton [self.view addSubview:confirmButton]; 若要设置UIButton背景图片时:

2.3K50

iOS输入框字符限制

输入拼音也不能超过最大输入长度了,比如:目前最大长度是6,那么输入超过6个单词拼音,输入不了,比如想输入上海,直接就把shang显示输入框中了。...问题2: 这种方式,在iOS12.0手机上会出现,输入拼音直接把拼音显示到了输入框内,本来是输入拼音选汉字,但是加了这个方法后在iOS12上,输入拼音到过程中直接把拼音就显示输入框中了,完全乱了。...方法2 那既然上面的方法1在iOS12上完全不能用,来试试方法2实现,即在textField代理方法中判断,代码如下: import UIKit class ViewController: UIViewController...;其次超出6个不会自动把拼音带入输入框内,只是限制超出后到输入无效。...self.text = (text as NSString).substring(to: minCount) } // MARK: - other } 运行调试后,发现完美,输入拼音

31340

Swift 书面 ToDo App

下面的代码是使用全部Xcode Version 6.0.1 (6A317)书面。 因为使用团队开发stroyboard在并购诸多不便时间,所有或使用.xib该文件准备ToDo App....作为基本ViewController,打开 Main.xib File’s Ownerl类属性改为 Main(这样才干够关联变量拖动到 Mian.swift )。...3、然后在Main.swift 中编写一下TableView 数据源和代理方法。这里我们用是 自己定义 Cell。...: Add.swift 中关联变量 desc 是UITextView 类型,UITextView 不像 UITextField 有 placeHolder ,所以这里我们引入一个 OC 写 KCTextView...完整项目代码我发在github上来。须要这里拿。 版权声明:本文博客原创文章,博客,未经同意,不得转载。

1.5K20

iOS开发系列——Storyboard

b.png 要实现这个登录,那么接下来就是事件和属性绑定问题,大家应该可以猜到登录逻辑代码肯定在ViewController.m中编写,那么storyboard文件是如何关联这个类呢?...要想在代码中使用UITextField,并且添加按钮点击事件,则必须在ViewController.h中定义两个UITextField属性和一个登录方法。...IBAction:其实就是void,只是当你定义IBAction在Interface Builder中可以关联某个控件事件方法(后面的关联操作将会看到,而且我们在代码中也可以看到代码前面多了空心圆点...Xcode我们提供了几种方式来实现代码和storyboard控件关联: 1.拖拽控件代码中(首先点击Xcode右上方“Show the Assistant editor”切换对应视图,然后在代码中打开....h文件,同时打开Interface Builder,按住ctrl键拖拽控件代码中相应位置进行关联),关联后属性或方法前空心圆变成实心表示已经关联具体控件(注意:事实上,从控件拖拽代码如果代码中没有定义对应属性和方法

3.2K40

iOS学习——页面的传值方式iOS----KVC和KVO 详解

一、简述 在iOS开发过程中,页面跳转在页面之间进行数据传递是很常见事情,我们称这个过程页面传值。...适用场景:从主页面push子页面,子页面需要使用到主页面的数据,我们需要使用到正向传值。 传递方式:正向传值。...; @property (strong, nonatomic) NSString *content;//属性接收数据 @end 主页面在跳转时候数据赋值给子页面对应属性 //主界面跳转数据赋值给对应属性...:和反向传递不走基本就是反过来就OK了,但是有一点需要注意是正向传递从主界面push子界面发送通知,这时候要确保子界面已经注册了通知,否则会收不到通知,所以正向传递,子界面通知注册应该在子界面的初始化...适用场景:从主页面push子页面,子页面需要使用到主页面的数据,我们需要使用到正向传值。

1.7K20

【 iOS 应用开发 】 UIKit 控件 ( UIView 属性 | storyboard 设置 | 模拟器 | 拖线关联 | tag | 软键盘操作 | 颜色值 | 代码生成控件 | 动画设置 )

界面, 先创建哪个 ViewController 控制器, 显示哪个控制器对应 view 控件, 箭头所指 ViewController 先进行初始化 并 显示对应 控件; 3.storyboard...中 ViewController 数量 : 一个 storyboard 中可以有多个 ViewController, 右侧对象库中, 第一个就是 ViewController 对象, 可以拖入 storyboard...箭头选中 : 4.箭头控制 - 拖动 : 界面中有多个 ViewController , 可以箭头从 ViewController 之间来回拖动, 切换 storyboard 界面 初始...; 3.绑定方法 : 两个按钮同时绑定同一个方法上 ; 4.设置 tag : 给 两个按钮分别设置 tag 1 和 2 ; 5.方法关联 : 两个按钮都关联同一个方法上 ,...“代码生成UIView控件”, 进入辅助编辑器模式, 按下 control 键不放, 左键拖动按钮 ViewController.m 中, 在弹出对话框中进行如下设置; 生成方法 - (IBAction

4.7K30

【IOS开发高级系列】MVVM—ReactiveCocoa架构设计专题(二)

Signal处理完数据后,可以向下一个Signal或Subscriber传送数据。可以看到上半部分两个Signal是冷(cold),相当于实现了某个函数,但该函数没有被调用。...比如上面的第二张图,首先signalA可能发了一个网络请求,拿到结果后,把数据通过sendNext方法传递下一个signal,signalB可以根据需要做进一步处理,比如转换成相应Model,转换完后再...数据从signal传送到subscriber,还可以通过doXXX来做点事情,比如打印数据。         ...同时监听多个变量变化,这些变量满足一定条件,使button可点击状态。         ...场景:button监听 两个输入框有值和一个成员变量值,输入框有输入且成员变量,button可点击状态。

26620

2.检查网络状态

最好能监听设备网络状态改变,设备网络状态连接、断开,程序也应该有相应处理。   工欲善其事必先利器,在检查设备网络状态前,我们要先实现两个步骤: 下载,添加Reachability类。...为了在程序中访问界面上文本框,文本框绑定siteField IBOutlet属性。...为了让程序能相应界面上3个按钮点击事件,“测试”按钮“Touch UP Inside”事件绑定testNetStatus:事件处理方法,“测试WIFI”按钮“Touch UP Inside”事件绑定...除了直接检测网络连接状态之外,有时候程序还需要监听网络状态改变。网络断开连接,提醒用户,网络连接已经断开,应用可能需要暂停;网络重新连接,再次提醒用户,应用可以继续运行。...,该对象网络连接状态处于NotReachable,程序会使用UIAlertView进行提醒。

1.2K90

iOS学习——tableview中带编辑功能cell键盘弹出遮挡和收起问题解决

最近在项目中经常用到UITableView中cell中带有UITextField或UITextView情况,然后在这种场景下,当我们点击屏幕较下方cell进行编辑,这时候键盘弹出来会出现遮挡待输入...2.1 UITextField或UITextView点击之后详细流程   在对cell进行封装和自定义时候,我们需要考虑我们UITextField或UITextView从点击编辑框结束编辑整个过程是怎么样...,首先,我们再主控制器中定义几个属性来保存我们键盘弹出tableviewcontentOffset以及当前编辑cellframe,然后在应用自定义cell设定我们两个回调block,开始编辑...@property (assign, nonatomic) CGRect editFrame; //保存键盘弹出前tableviewcontentOffset,方便我们在键盘收起tableview...,和弹出键盘相对,弹出键盘我们保存了弹出键盘之前tableviewcontentOffset偏移量,所以,在收起键盘后,我们tableviewcontentOffset值设为弹出之前值就可以了

3.9K80
领券