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

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

显示数据,在正常开放中这些数据往往来源于网络请求,而在本篇博客中就模拟数据源,来为我们的TableView提供显示数据。...数据源的格式是一个数组,而数组中存放的是多个字典,每个字典有两个键值对,一个键值对存储要显示图片的文件名,另一个键值对则存储美女的名字。为了使该数据的存储结构,请看下方结构图。 ?     ...原理图有,接下来就要使用代码来创建出上述结构的数据以供TableView数据源使用,下面的方法就是实现上述结构的函数。        ...(2) 接着就是往上面这个数组中填充数据,代码如下: 1 //-----------创建Table要显示数据------------------------- 2 func createSourceData...TableView提供数据

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

iOS 9 Storyboard 教程(一下)

运行app,但是好像却没有任何改变…并不是很奇怪:你还必须为tableView添加数据源,这样它才会知道应该显示多少行数据.这正是你接下来要做的....这个table view应该会显示一列玩家名单,所以现在你需要为这个app创建一个数据模型—一个包含Player对象的数组.使用Swift File模板在iOS/Source里为这个工程添加一个新文件....接下来,你需要把一个Player对象数组赋值给PlayersViewController.使用Swift File模板为开始,创建一个新文件,命名为SampleData.把它添加到SampleData.swift...---- Note: 在这个app,你只用到了一个原型cell,如果你的table需要显示不同的cell,那么你可以很简单的在storyboard中添加额外的原型cell.你也可以复制已经存在的cell...恩…,那看起来不太对—cell显示的好像被压扁一些.你确实改变了原型cell的高度, table view 却不这么认为.有两个方法解决这个问题:你可以改变 table view的高度属性,或者实现

3K20

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

其实,在swift中,是不存在基本的数据类型的,所谓的数据类型,其实都只是结构体。这也是swift中的一个特点。 ? 2、变量和常量 声明 swift中用let声明常量,用var声明变量。...数组是有序数据的集,集合是无序无重复数据的集,而字典则是无序的键值对的集。 数组使用有序列表存储同一类型的多个值。相同的值可以多次出现在一个数组的不同位置中。...当集合元素顺序不重要时或者希望确保每个元素只出现一次时可以使用集合而不是数组。 集合中的元素必须有确定的hashvalue,或者是实现hashable协议。...在swift中,用到了大量的结构体,比如说基本的数据类型都是结构体而不是类。这意味着它们被赋值给新的常量或者变量,或者被传入函数或方法中时,值会被拷贝。...Swift中的protocol不仅能定义方法还能定义属性,配合extension扩展的使用还能提供一些方法的默认实现,而且不仅类可以遵循协议,现在的枚举和结构体也能遵循协议

15.3K90

Jekyll-Admin-Mac 开发纪要-左侧菜单栏

但是到目前来说我们几乎达到显示 Logo,但是我们的背景颜色设置白色不是我们所希望的,我们设置默认的为透明颜色。 我们还发现我们我们的试图并没有达到我们设置约束的大小。...这个时候我们还发现一个问题,我们的 Window可以压缩宽度最小,这样左边的侧栏已经挡着。 修改 Window的最小显示区域 我们可以通过下面设置 window的最小值。 ?...我们发现我们剩下的只有一个 Column的宽度只有 116并不是全屏显示的。 去掉 NSTableView的边框 我们设置宽度为 205。 ? 我们现在发现一个问题,我们本来有205的宽度的。...我们修改我们的数据源为一个 Array数组。...然而现在一个问题已经出现,现在这么多的配置需要配置岂不是很麻烦。 这就涉及到面向对象思想,但是我们可以在 Swift中使用 Struct作为我们的配置数据源。

2.1K10

iOS - RxSwift 项目实战记录

,而恰巧RxSwift已经出来有一些时间,语法也基本上稳定,遂只身前来试探试探这RxSwift,接着就做了个小Demo,有兴趣的同学可以瞧一瞧~ Exhibition 结构 . ├── Controller...分类,Moya请求完进行Json转模型或模型数组 ├── Model │ └── LXFModel.swift // 模型 ├── Protocol │ └── LXFViewModelType.swift...// 定义模型协议 ├── Tool │ ├── LXFNetworkTool.swift // 封装Moya请求 │ └── LXFProgressHUD.swift...可以看到我为Output添加了一个序列,类型为我们自定义的LXFSection数组,在Input里面添加了一个请求类型(即要请求什么数据,比如首页的数据) 我们通过 transform 方法将input...,sections在ViewController已经绑定到tableView的items,所以此时tableView数据会被更新。

2.9K41

RxSwift介绍(一)——RxSwift初探

swift环境下,RAC的孪生兄弟RxSwift同样提供相同的框架使用,并且基于swift语言的优点,RxSwift甚至能够更简洁地开发业务代码。关于RxSwift的优点,大把大把的人在夸。...我自己的感受是,虽然学习曲线比较陡峭,学习成本很高,一旦掌握其开发技巧,收获要比想象中多,值得去学习并实践的框架。 接下来先看一个最常用的例子,swift环境中搭建一个简单的tableView。...这里往往需要遵循TableView相关的各种代理方法,下面是使用结构体生成一串简单的数组并放入tableView显示内容。...//使用结构体生成tableView数据源 struct DemoModel { var firstKey:String var secondKey:Int init(firstKey...tableViewswift环境下的实现 遵循的tableView代理方法还是一如既往的繁多 接下来,在使用RxSwift框架下改造上面的tableView,来感受下RxSwift的强大。

3K40

AsyncDisplayKit 2.0 教程:入门「译」

免费App排行榜前100大多数都没有使用Swift(至少6个使用ASDK)。出于这些原因,本系列将重点介绍 Objective-C。话虽这么说,我们已经包括一个Swift版本的实例项目。...事实上,虽然他们定义一些完全相同的方法,如 -tableNode:numberOfRowsInSection:,两组协议也不完全相同,因为 ASTableNode 行为和UITableView还以所有不同的...image.png 真是一个流畅的 tableView!一旦你开始做了,那就让我们做的更好吧! 无限滚动 在大多数应用中,服务器的数据点的个数往往会多于当前 tableView显示的单元格数量。...image.png 尽管现在的技术能够实现,你不会希望在到达可见区域之前预先加载全部的 collection。...最近的话题很好的概述一些框架对处理大图片存在问题的的尝试。 你可能会对 Paper的构建 感兴趣。虽然当时并没有开源,并且有许多地方发生了变化,看到这一切的开始还是挺有意思的。

2.1K20

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

开始我们需要知道点击行的索引(记住,不是实际的indexPath.row)而是可见cell的行索引,所以我们将会开始在下面的tableView代理方法里给它分配一个局部变量: func tableView...现在运行app.顶层的cell可以在点击之后展开或是合拢,尽管点击子cell还没有发生任何改变,结果令人印象深刻. ?...拾取值 从现在开始我们可完全专注于处理输入数据和与用户交互的子cell的控制.我们通过实现逻辑,当cell的"idCellValuePicker"标识符被点击的时候,将会才去行动.在我们的demo里,...我们设置显示选中cell的值,作为顶层cell的textLabel的文本内容. 当顶层cell不是展开的时候,我们做了标记. 我们会把所有的子cell标记为不可见的....tableView的方法,主要的特点就是在一个plist文件中,所有cell的描述都使用具体的属性.我向你展示了当cell显示,打开或是选中的时候,如何使用代码处理cell的描述列表;此外,我给你一个方法通过用户输入数据来直接更新它

1.5K30

Swift-MVVM 简单演练(四)

Swift-MVVM 简单演练(一) Swift-MVVM 简单演练(二) Swift-MVVM 简单演练(三) 前言 这一篇主要写微博的首页布局,及MVVM模式的体会。...像微博这种自定义的Cell布局略显复杂一些,我们最好将其拆分出来各个不同的模块来处理比较好一些。不要像之前那样,所有的控件都写在一个cell里面,那样不好处理。...脱离业务谈什么模式本身就不是很好。凡事有法,法无定式。依个人习惯去延伸就好。没必要非得说谁的代码就一定是错的。这样真的不太好。 ---- 搭界面、展示微博正文文字 凡事先拣简单的东西去实现。...看着有几分神似。 完善微博数据模型 好友的头像、昵称等信息是存储于每条微博数据的一个user属性当中的。...而且这个控件的逻辑判断算是简单的,如果逻辑判断复杂的就不是4行代码的事情。 试着把代码这部分代码放到viewModel中尝试一下。

2.3K50

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

前言 前段时间无意中发现看知乎,一个知乎答案和用户的精选站。网站开发者是知乎用户苏莉安,他写了个爬虫从知乎抓取数据,而且还提供 API 文档。...目前已经完成了大部分内容,花的时间不长,后续我还会添加一些功能,然后做一些优化,再加点注释。...至于点击菜单项显示不同数据的效果呢,乍一看跟我之前写过的多表视图有点像,那个思路在这边是不太行得通的,因为列表上面的内容(菜单项、用户基本信息)都得进行滚动,如果按那个思路的话,同一维度(y 轴方向)...View 的响应,如果是 UI 相关的,譬如改变颜色位置大小等等,都可以放到 View 中自己搞定,但是一些数据相关的,或者需要跟其他 View 协调的,可以通过代理让 Controller 去处理。...关于面向协议编程 Swift2之后可以用 extension 给协议方法或者属性加上一个默认实现,这使得 Swift 可以用协议模拟 Ruby 中用 module 实现的 mixin 效果,也就是通过协议扩展某个类的功能

1.2K50

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

正如这个词所暗示的,一个可展开的tableView是一个tableView,它可以"允许"它的cell打开和合拢,显示和隐藏其他的cell,在任何情况下都总是可见.当需要收集简单的数据或者显示用户所需要的信息的时候...除了这些cell,你也可以找到一些已经被实现的代码.虽然这些代码是重要的并且完成了demo的功能,但是它们并不是此次教程的核心代码,所以就跳过了编写代码并且已经提供写好的代码.当我们通过下面的部分,缺失的那些我们所感兴趣的代码都会在下面一步一步地增加...文件的内容加载到一个数组里.在下面的部分,这个数组将会被用作tableView数据源的一部分....在程序的世界中,那就意味着每个cell的行索引(index)不是不变的(我们写index.row来处理cell),因此我们在使用cell行的时候,不能仅仅通过数据数组.这是强制性的工作以及拿出提供可见...通过让每个cell都有行号,我们可以从cellDescriptors数组中,"提取"cell描述的字典.注意,指定为二维的索引是indexOfVisibleRow,而不是indexPath.row.使用第二个会返回错误的数据

1.8K50

Swift| 基础语法(五)

前言 总结下 swift下的基础语法,里面涉及到:常量&变量、Swift中的数据类型、逻辑分支、循环、字符串相关、数组和字典、方法的书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift...Swift| 基础语法(一) Swift| 基础语法(二) Swift| 基础语法(三) Swift| 基础语法(四) Swift| 基础语法(五) 本文涉及: 纯代码创建应用根试图 UILabel...print("按钮点击: \(butTitle)") } 三、UITableView的使用 var myTb : UITableView?...} 在Swift中,创建tableViewCell的方法可以分为两种创建tableView时候注册和需要使用时手动创建。先聊聊创建tableView的时候直接注册cell: myTb?....register(MyNewTableViewCell.self, forCellReuseIdentifier: "myCell") 当注册Cell之后,在没有可重用的Cell时会自动创建,并且不能在需要时手动创建

2K30

手把手带你撸一个网易云音乐首页(二)

但是网易云音乐首页可不是那么回事,它的每个 Cell 呈现的内容类型都是不同的,这就导致我们无法通过复用 Cell 的方式来呈现数据, 那怎么样才能构建出正确的视图呢! 首先,我们先来确定问题。...Model 在上一篇文章中,我们已经确定获取数据源的接口,接下来就是如何去请求数据?...我们将创建 12 个不同的 Sections,分别是: Banner 圆形按钮 推荐歌单 个性推荐 精选音乐视频 雷达歌单 音乐日历 专属场景歌单 云贝新歌 播客合辑 24小时播客 视频合辑 因为我们获取到的数据不是同一格式的...在 swift 中,我们可以使用协议扩展 extension 为协议提供默认值, 这样我们就不必为每个 item 的 rowCount 赋值了,省去一些冗余的代码: extension HomeViewModelSection...CGFloat(kScreenWidth) return CGRect(x: 0, y: 0, width: width, height: height) } } .... } 这就是数据项所需的全部内容

1.3K20
领券