swift 协议传值的实现】的更多相关文章

首先呢说下结构 一个ViewController 一个ModelViewController 在ModelViewController中定义了一个协议 这个逻辑 从第一个界面进入第二个界面  从第二个界面回到第二个界面并通过协议传值回到第一个界面 打印输出值 ModelViewController.swift protocol lwkDelegate {//定义协议 func changeString(newString:String) } 在这个ModelViewControler类中实现一些…
一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N + 1界面传值.而在此基础上,必须知道跳转界面的明确位置及所要传的值的具体类型.在第二个界面中声明所要传值 类型的属性. @interface SecondViewController : UIViewController //声明一个字符串属性来保存第一个界面传过来的字符串内容 @propert…
1. 协议(Protocol):与OC之间唯一不同的是Swift中的协议不管是属性还时方法全部是必须实现的 /** protocol*/ protocol FullNamed { /** 计算属性申明,只读的计算属性*/ var fullName:String { get } } /** 实现协议*/ struct Person:FullNamed { /** 实现协议  可以把计算属性实现为存储属性,更改其本身的性质*/ var fullName: String = "abc" }…
http://itjoy.org/?p=416 前边介绍过从第一个页面传递数据到第二个页面,那么反过来呢我们该如何操作?还是同一个例子,将第二个页面的字符串传递到第一个页面显示出来,这中形式就可以使用协议来传值,协议我们可以理解成双方规定好一组标准,都满足这个标准我们之间就可以通信,一方通过协议发送数据,另一方通过协议来接受数据. 代码如下:从Second传递数据到First           Objective-C   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15…
协议是为方法.属性等定义一套规范,没有具体的实现. 协议能够被类.结构体等具体实现(或遵守). protocol SomeProtocol { // protocoldefinition goes here } struct         SomeStructure:            FirstProtocol, AnotherProtocol { // structure definition goes here} class  SomeClass:    SomeSuperclass…
不知道原理,就知道这么用的,皮毛上的那一点. 寻思着把以前的项目改成swift的,结果了,,, 反向传值 一. //类似于OC中的typedef typealias sendValueClosure=(string:String)->Void//1 二. //声明一个闭包 var myClosure:sendValueClosure? //下面这个方法需要传入上个界面的someFunctionThatTakesAClosure函数指针 func initWithClosure(closure:s…
协议(上) 协议是Swift非常重要的部分,协议规定了用来实现某一特定工作或者功能所必需的方法和属性.类,结构体或枚举类型都可以遵循协议,并提供具体实现来完成协议定义的方法和功能.任意能够满足协议要求的类型被称为遵循这个协议. protocol SomeProtocol { // 协议内容 } struct SomeStruct: SomeProtocol { // 结构体和枚举都可以遵循协议,写法以 ": 协议名"为准 多个协议名以逗号分隔 } class SomeClass { }…
1,Swift中协议类似于别的语言里的接口,协议里只做方法的声明,包括方法名.返回值.参数等信息,而没有具体的方法实现. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 protocol Person {     //读写属性     var name:String{get set}           //只读属性     var age:Int{get}           //类型方法     class func method1()           //…
Swift语言开发中使用协议+代理的用法和oc中是一样的,只不过变得是语法.现在就进入swift的协议+代理. 先上个图,看看我们要实现的效果:  首先是第一个页面,然后点击到第二个页面,最后点击返回按钮把值返回到第一个页面 第一个页面 第二个页面 点击返回按钮返回第一个页面 1.首先在第二个页面声明一个协议,亲.请注意语法和oc不同哦!! 协议只需要大括号括起来. 声明协议 2.声明一个代理属性,是用来响应协议的 声明代理属性 3.在要返回第一个页面的事件里把协议传过去,协议方法里的参数就是你…
「协议」(protocol)声明一系列方法.属性.下标等用来约束其「遵循者」,进而保证「遵循者」能够完成限定的工作.「协议」本身不实现任何功能,它仅仅描述了「遵循者」的实现.「协议」能被类.结构体.枚举所遵循,若某个类型遵循某「协议」,则称该类型遵循(conform to)某协议. 协议的语法 协议的定义与类.结构体和枚举的定义非常相似,如下: protocol SomeProtocol { // 协议内容 } 在类/结构体/枚举的名称后加上协议名称,中间以冒号:分割即可实现协议:实现多个协议时…
(默认已经设置好桥接头文件)1.在Swift文件中写好协议2.oc类文件中导入:"项目名-swift.h"格式的文件 即:#include "项目名-swift.h"3.在协议前面添加 @objc例如:@objc protocol MYProtocol {func MyFunc( )}…
/// 一般情况下,定义的协议都必须实现 protocol SomeProtocal { func doSomething() } /// 定义一个类,并且遵守协议 class Teacher:SomeProtocal { func doSomething() { print("回家烧饭") } } class Student:SomeProtocal{ func doSomething() { print("回家写作业") } } //定义协议的时候 协议后面最好…
委托代理 1.定义个协议 2.声明一个委托代理 3.指定委托代理,调用委托实现的协议方法 4实现LoadingDelegate协议 代码如下: import UIKit //1.定义个协议 protocol loadingDeleagte { func didLoading(text: String) } class HomeViewController: UIViewController { @IBOutlet weak var textFlied: UITextField! //2.声明一个…
协议(下) 在拓展中添加协议成员 通过扩展使得Dice类型遵循了一个新的协议,这和Dice类型在定义的时候声明为遵循TextRepresentable协议的效果相同.在扩展的时候,协议名称写在类型名之后,以冒号隔开,在大括号内写明新添加的协议内容. protocol TextRepresentable { func asText() -> String } extension Dice: TextRepresentable { // 通过拓展让Dice类遵循TextRepresentable协议…
协议的传统实现: 定义接口+实现协议    由抽象到具体: 协议的逆向实现(使用扩展): 由已存在的类型抽离部分功能作为协议,并让原体符合协议: 由具体到抽象:  向上抽离:  向上生成: 协议的缺省实现: (使用扩展)协议遵从的从无到有. 本质是协议于具体:先有谁,后有谁  及 怎么结合的问题: 协议的生成律与结合律:…
之前实际开发的时候遇到的一个小问题,网上也没有找到相关说明.本来当时弄明白了想着记下来的,但是比较忙就耽搁了,趁今天休息记录一下. 首先,我们看一下下面这个两数之和的协议 protocol Test: CustomStringConvertible { var num1: Int { get set } var num2: Int { get set } func getSum() -> Int func sum() //num1 变为num1+num2 } extension Test {//…
一.协议定义与实现: 1.关联类型: 2.协议组合: 3.协议扩展: 4.协议实现. 二.协议使用:…
// associatedtype 关键字 用来声明一个类型的占位符作为协议定义的一部分 protocol LXFViewModelType { associatedtype Input associatedtype Output func transform(input: Input) -> Output } /* 定义协议时候,协议后面最好跟上class delegate的属性最好用weak,用于防止循环引用 */ protocol BuyTicketDelegate : class{ fu…
协议: 1.Swift协议用于定义多个类型应该遵守的规范 2.协议定义了一种规范, 不提供任何实现 3.协议统一了属性名, 方法, 下标, 但是协议并不提供任何实现 4.语法格式: [修饰符] protocol 协议名: 父协议1, 父协议2, ... { // 协议内容 } 修饰符:可以省略, 也可以是private, internal, public之一 协议名应与类名采用相同的命名规则 一个协议可以有多个直接父协议, 但协议只能继承协议, 不能继承类 协议的内容: 指定协议实现者必须提供的…
鉴于昨天开会部门会议讨论的时候,发现有些朋友对枚举的用法还是存在一些疑问,所以就写下这个文章,介绍下Swift下的枚举的用法. 基本的枚举类型 来,二话不说,我们先贴一个最基本的枚举: enum Movement { case letf case right case top case bottom } 这里就定义了一个简单的方向枚举,有上下左右四个方面的case.那么我们可以做些什么操作呢? 1.你可以遍历他的枚举: let aMovement = Movement.left switch a…
Swift 开源项目精选-v1.0 2016-03-07 22:11 542人阅读 评论(0) 收藏 举报  分类: iOS(55)   Swift(4)    目录(?)[+]   转自 http://dev.swiftguide.cn/archive/featured-open-source-projects-in-swift_v1.0.html 目录 工具 存储 网络 图片 框架 界面 示例 应用 工具 SwiftyJSON By tangplin, lingoer : GitHub 上最…
Swift正在完成一个惊人的壮举,它正在改变我们在苹果设备上编程的方式,引入了很多现代范例,例如:函数式编程和相比于OC这种纯面向对象语言更丰富的类型检查. Swift语言希望通过采用安全的编程模式去帮助开发者避免bug.然而这也会不可避免的产生一些人造的陷阱,他们会在编译器不报错的情况下引入一些Bug.这些陷阱有的已经在Swift book中提到,有一些还没有.这里有七个我在去年遇到的陷阱,它们涉及Swift协议扩展.可选链和函数式编程. 协议扩展:强大但是需要谨慎使用 一个Swift类可以去…
http://itjoy.org/?p=420 前边我们介绍过属性传值和协议传值,这里介绍一下块传值,块类似于C中的函数指针.在Controller中传递数据非常方便,还是继续上一章的例子,将数据从Second传递到First,这里使用块来完成,看起来似乎和协议很像,不过比协议略简单. 代码如下所示:           Objective-C   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28…
页面间传值主要分为:1.属性传值.2.协议传值.3.单例传值.4.Block传值:   界面之间的传值:   1.从前往后:属性传值 2.从后往前:代理传值   3.多界面之间的传值 — 单例传值   单例传值: 单例:(1.只有一个对象:2.程序退出时空间才会被回收)   [UIScreen mainScreen] [NSBundle mainBundle] [UIApplication shareApplication] [NSUserDefaults  standarUserDefault…
iOS是面向对象开发的,有很多不同的类,很多时候会遇到类与类之间的"交流"需求,比如通知.传递数值等等,(通知可以用nsnotificationcenter来做, 以后总结)下面主要总结一下类之间的传值方式. 1.属性传值 前向后传值 . 2.协议传值 3.Block传值 代替协议代理传值,主要时间点问题. 4.单例传值 数据共享. 5.通知传值 通知中心NSNotificationCenter提供了一种更加解耦的方式.最典型的应用就是任何对象对可以发送通知到中心,同时任何对象可以监听…
本节包括内容: 继承Objective-C的类(Inheriting from Objective-C Classes) 采用协议(Adopting Protocols) 编写构造器和析构器(Writing Initializers and Deinitializers) 集成Interface Builder(Integrating with Interface Builder) 指明属性特性(Specifying Property Attributes) 实现Core Data Manage…
1.属性传值 前向后传值. 记住: /* 1: 属性传值第一步需要用到什么类型就定义什么样的属性 2: 从上一个页面到一个页面的选中方法里面将要传的值传到来(上一个页面)备注:这种方法只适用于上一个页面推到下一个页面 */ MainViewController与SecondViewController两个视图 控制器 ,点击MainViewController中的按钮将跳转到SecondViewController视图,同时想要传递一个值过去.这时可以利用属性传值. 首先SecondViewCo…
苹果公布了全新的编程语言Swift,Swift继承了Objective-C语言特性,并从Python和Java Script中长处,使Swift更易读.未来swift编程语言的会特大广大的使用 Swift特性 Swift支持多种检查算法功能. Swift使用[]操作符声明数组和字典,运行迭代器. Swift看起来并不像是个表达式语言. Swift使用class来创建类,类含字段和方法. Swift採用Objective-C的命名參数和动态对象模型,提供了对Cocoa框架和mix-and-matc…
接着上面一篇说的内容: 一 继承: 苹果继承与水果,苹果是水果的子类,则苹果是一种特殊的水果:这就是继承的关系,这个我们学OC的时候相信也都理解了,就不再描述定义了,下面的就叫继承: class ZXMessageCell: UITableViewCell { // 自定义的cell继承与UITableviewCell } 继承了父类,你也就能使用父类的属性方法,这些我们学OC的时候也都清楚.看下面几点, 1:重写父类的方法 2:重写父类的属性 3:重写属性观察者    上面的 1 2 3 只要…
前言 枚举是一种自定义的数据类型,在 Swift 中枚举类型拥有相当高的自由度.在 Swift 语言中枚举是一级类型,它拥有在其他语言中只有类才拥有的一些特性,比如实例方法,实例构造器等. 枚举声明的类型是囊括可能状态的有限集,且可以具有附加值,并在你的代码中以一个安全的方式使用它们.通过内嵌(nesting),方法(method),关联值(associated values) 和模式匹配(pattern matching) 枚举可以分层次地定义任何有组织的数据. 和 switch 语句类似,S…