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

窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用

协议与委托代理回调在之前的博客中也是经常提到和用到的在《Objective-C中的委托(代理)模式》和《iOS开发之窥探UICollectionViewController(四) --一款功能强大的自定义瀑布流...说到协议,在Objective-C中也是有协议的,并且Swift中的协议和Objc中的协议使用起来也是大同小异的,在Java等现代面向对象编程语言中有接口(Interface)的概念,其实和Swift中或者...上显示的数据了,在正常开放中这些数据往往来源于网络请求,而在本篇博客中就模拟数据源,来为我们的TableView提供显示的数据。...1 /** 2 返回要显示的Cell 3 4 - parameter tableView: cell要显示的TableView 5 - parameter...上面使用的委托回调主要是使用Swift中的协议(Protocol)来实现的。那么如何使用协议来实现你自己的委托回调呢?这将是下面将要介绍的内容。   二.

3.6K80

Xcode10.2 继承UITableView协议失效

前言:在这次App版本迭代进入集成测试阶段尾声,正式环境打包release环境后,测试回归发现许多包含 tableView 的页面都无法响应点击事件。...开始时,真的是百思不得其解 ---- 开发环境: Xcode10.2.1 swift 5.0 涉及的类关系: 父类:BaseTableViewController 拥有成员变量 UITableView...问题症结: debug 模式下真机与模拟器调试,遵循的代理方法都可以正常执行; release 模式打包出来后,子类中覆写的 TableView 相关协议 func tableView(_ tableView...) 方法无法正常执行,导致页面显示错误与点击事件无响应; 问题原因: Xcode 10.2 版本打包编译 bug。...Xcode 10.1 打包上线(若使用 swift 5 版本,此方案无效);xcode 10.2.1 swift UITableView部分协议方法不执行 在子类中要覆写代理实现的方法前,添加 @objc

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

    使用流动控制器(Flow Controller )实现 MVVM 协议模型

    对于这种情况,有必要研究一下 Swift 的泛型,虽然它仍然有一些问题。...挑战 挑战的第一阶段是很简单的,作为一个项目列表显示他们,并选择一个显示细节。我相信,这是开发应用程序的最常见的任务。在这里是一个简单的猫头鹰列表,有名称,照片和描述。...因此,我们通常的测试可以覆盖大多数的接口,增加安全性的实现。 备注:因为某些原因,在某些情况下,Swift 将不会接受一个泛型类型作为一个 init 方法的协议参数。...目前仍在调查究竟是 Swift 的 bug 还是故意限制。 得到的结果是代码非常干净,并最大限度地提高接口的重用。还研究了泛型和协议作为一种抽象问题的方法。其他的结果是构建时间明显快得多。...我不能忘记感谢 Mikail Freitas 帮助我识别泛型协议初始化时的错误。我们永远不明白为什么在一个案例中运行好好地,而另一个则不起作用。

    1K40

    开源项目——『看知乎』iOS 版

    会显示相应的数据。...= CGFloat(item.rawValue) tableView.reloadData() } } 也谈谈 MVC 和 MVVM MVC 是个非常经典的概念,它最早来自于...SmallTalk,四人帮的《设计模式》在引言中就介绍了 MVC——通过“订阅/通知”协议来分离 Model 和 View;View 使用 Controller 子类的实例来实现一个特定的响应策略。...05年的时候微软为设计 WPF 而提出 MVVM 模式,主要思想是基于Model 和 View 的数据双向绑定,通过响应事件来处理用户的操作。...关于面向协议编程 Swift2之后可以用 extension 给协议方法或者属性加上一个默认实现了,这使得 Swift 可以用协议模拟 Ruby 中用 module 实现的 mixin 效果,也就是通过协议扩展某个类的功能

    1.2K50

    iOS - RxSwift 项目实战记录

    ReactiveX 最近刚刚把接手的OC项目搞定,经过深思熟虑后,本人决定下个项目起就使用Swift(学了这么久的Swift还没真正用到实际项目里。。。)...// 定义了模型协议 ├── Tool │ ├── LXFNetworkTool.swift // 封装Moya请求 │ └── LXFProgressHUD.swift...一、自定义Section 在我们自定义的Model中创建一个Section的结构体,并且创建一个扩展,遵循SectionModelType协议,实现相应的协议方法。...) 大功告成,接下来说说section序列的产生 ViewModel的规范 我们知道MVVM思想就是将原本在ViewController的视图显示逻辑、验证逻辑、网络请求等代码存放于ViewModel中...LXFViewModelType.swift // associatedtype 关键字 用来声明一个类型的占位符作为协议定义的一部分 protocol LXFViewModelType {

    2.9K41

    iOS开发常用之开发资源

    iOS开发的一些奇巧淫技1 - TableView不显示没内容的Cell怎么办; 键盘事件:IQKeyboardManager ; app不流畅:KMCGeigerCounter ; CoreData...iOS开发的一些奇巧 - 技巧2 - 用一个pan手势来代替UISwipegesture的各个方向,拉伸图片,播放GIF,上拉刷新,把tableview里cell的小对勾的颜色改变,navigationbar...RemoteControl - 从Xcode内部控制您的iPhone进行端到端测试。 MVVM介绍 - 替换MVC的开发模式。 第三方接口 - 基本所有第三方接口都在这,再也不用那麻烦去找了。...今天分享的规范来自raywenderlich.com团队成员共同完成的,希望对学习OC的朋友们有所指导和帮助。 迅速 Swift开源项目精选-v1.0 - Swift开源项目精选-v1.0。...SwiftGuide - 这份指南汇集了Swift语言主流学习资源,并以开发者的视角整理编排 - 非常不错,值得推荐。 Awesome Swift - 一个收集了很多Swift开发资源的网站。

    94420

    swift4.0语法杂记(精简版)

    正如上图所示,playgound文件的左边是代码区,右边则是显示结果的区域。当点击用于眼睛时会实时显示出界面效果。...print("你都写了我两次啦"):() 3、 三目运算符的简单模式 三目运算符的简单模式通常是用于处理可选项的。“??”的意思是说,如果表达式有值,就使用那个值,如果没有,就使用“??”...} } 设置tableView的frame tableView.frame = view.bounds 设置数据源和代理 实现UITableView的协议,并为tableView设置数据源...二十二、swift4新特性 以下内容来自 最全的 Swift 4 新特性解析 感谢大佬提供学习资源!!! 1、语法改进 在扩展extension中可以访问private的属性 举一个简单的栗子?!...在 Swift 4 中,隐式 @objc 自动推断只会发生在很少的当必须要使用 @objc 的情况,比如: 复写父类的 Objective-C 方法 符合一个 Objective-C 的协议 其它大多数地方必须手工显示的加上

    15.4K90

    RxSwift + MJRefresh 打造自动处理刷新控件状态

    本文是基于 iOS - RxSwift 项目实战记录 所述,如果你还未阅读过,建议你最好还先阅读一遍,并下载Demo熟悉一下 : ) LXFBiliBili 前言 MVVM的模式中,多出了ViewModel...面向协议 关于协议的内容可以看下我之前的这两篇文章 iOS - Swift 面向协议编程(一) iOS - Swift 面向协议编程(二) 总结协议的两大作用:1、规范 2、定制能力 定义协议 Refreshable...,通过initRefreshHeader方法或者initRefreshFooter方法给tableView或者collectionView赋予头部或尾部刷新的能力,并且书写下拉刷新时需要执行的代码 //...*/ // viewModel 中 output使用 protocol OutputRefreshProtocol { // 告诉外界的tableView当前的刷新状态 var refreshStatus...image.png 案例 协议:Refreshable.swift ViewModel:LXFLiveViewModel Controller:LXFLiveViewController LXFBiliBili

    1.9K41

    Swift 周报 第三十期

    例如,TableView.Delegate 自然是与表视图相关的委托协议。...开发人员应该这样声明它——嵌套在他们的 TableView 类中: class TableView { protocol Delegate: AnyObject { func tableView...作为一个额外的好处,在 TableView 的上下文中,可以使用更短的名称来引用嵌套协议委托(与所有其他嵌套类型一样): class TableView { weak var delegate: Delegate...但是,也没有理由人为地限制开发人员在函数中创建的模型的复杂性。一些代码库(值得注意的是,Swift 编译器本身)使用带有嵌套类型的大型闭包,并且它们受益于使用协议的抽象。...文章以示例结束,展示了如何使用这些技术来自定义一支蓝色铅笔或整套铅笔的外观。

    24520

    iOS工程师必看的 20 道 面试题

    Common(NSRunloopCommonModes):模式合集。默认包括Default,Modal,Event Tracking三大模式,可以处理几乎所有事件。 回到题中的情境。...滑动列表时,runloop的mode由原来的Default模式切换到了Event Tracking模式,timer原来好好的运行在Default模式中,被关闭后自然就停止工作了。...Swift中,默认所有方法在协议中都是必须实现的。而且,协议里方法不可以直接定义 optional。...Swift中,协议扩展(protocol extension)可以定义部分方法的默认实现,这样这些方法在实际调用中就是可选实现的了。...如self.tableview reload中,self.tableview就是接收者,reload就是消息,所以方法调用的格式在编译器看来是receiver message。

    3.8K40

    AsyncDisplayKit 2.0 教程:入门「译」

    免费App排行榜前100大多数都没有使用Swift(至少6个使用ASDK)。出于这些原因,本系列将重点介绍 Objective-C。话虽这么说,我们已经包括了一个Swift版本的实例项目。...说得好,但真正的黑魔法来自 ASRangeController 这些类用于影响所包含的 Node 的行为。...在下面的章节中,我们将遵循这些协议,使我们能够使用 tableNode 的功能。...image.png 真是一个流畅的 tableView!一旦你开始做了,那就让我们做的更好吧! 无限滚动 在大多数应用中,服务器的数据点的个数往往会多于当前 tableView 中显示的单元格数量。...如果将显示和预取都设置为一个屏幕,则它们将完全相同。通常数据需要存在才能显示,所以一般预取范围应该稍大一点。那么在 node 到达该范围时,就可以开始显示。 通常,该范围的前侧大于后侧。

    2.2K20

    在iOS中怎样创建可展开的Table View?(下)

    响应其他用户操作 在CustomCell.swift文件中,你可以发现CustomCellDelegate协议的所需的代理方法都已经被声明.通过在ViewController类里实现它们我们需要设法让app...让我们再一次修改ViewController.swift文件,采用上面的协议.移到类的顶部,添加一个协议,如下: class ViewController: UIViewController, UITableViewDelegate....我们要动态地组成全名,一旦姓和名都输入了.我们需要指定包含文本框的cell的索引.最后我们会在顶级cell更新显示的文本(全名),并且会刷新tableView,如下代码: func textfieldTextWasChanged...tableView的方法,主要的特点就是在一个plist文件中,所有cell的描述都使用具体的属性.我向你展示了当cell显示,打开或是选中的时候,如何使用代码处理cell的描述列表;此外,我给了你一个方法通过用户输入数据来直接更新它...(例如,将cell描述列表保存到文件),然而,那已经超出了我们的目标;我们最开始所想的是实现一个可展开的tableView,根据需求显示或隐藏cell,以及我们最终所做的.我相信,在这篇教程中你会找到左右有用的信息

    1.5K30

    春招路上孤独的iOSer的心路历程(面经)

    一定是线程不安全的么 swift 数组切片是什么 swift extension的理解 翻转链表 讲讲对这个程序的测试用例 最近公共父节点 提问 2019年 12-20 hr面 围绕简历上的获奖 还有奖学金成绩方面问了些问题...2020年 1-20 1、2面 一面 1 tableview 重用机制 滑动性能调优方法 2圆角效率问题 离屏渲染 3calayer 与uiview 区别 为什么这么设计 4swift 消息机制 5 多线程如何保证线程安全...效率比较 12 设计模式你还了解哪些 13 详细讲一下观察者模式、适配器模式、桥接模式 14 hppts加密过程详细讲一下 15 抓包原理 16 如何验证加密过程的证书 17 同步异步 串行 并发 区别...mvc和mvvm理解 了解哪些数据结构 散列表实现原理 iOS内存管理方式 了解哪些网络协议 http 传输层用的哪个协议,版本问题 2-27 网易有道 hr+OC 问了一些比较常规的问题 蘑菇街 3-...6 一面 40分钟 自我介绍 算法题: 两个队列实现栈 分类extension 在oc与swift区别 在什么时机加载(没答上来) oc与swift语言区别 tableview做了哪些优化 如何实现多个图片下载后合成一张图片

    2.5K20
    领券