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

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

说到协议,在Objective-C中也是有协议的,并且Swift中的协议和Objc中的协议使用起来也是大同小异的,在Java等现代面向对象编程语言中有接口(Interface)的概念,其实和Swift中或者...数据源的格式是一个数组,而数组中存放的是多个字典,每个字典有两个键值对,一个键值对存储要显示图片的文件名,另一个键值对则存储美女的名字。为了使该数据的存储结构,请看下方结构图。 ?     ...我们需要做的就是,在上面界面中,我们点击任意Cell就可以Push(导航控制器展示视图控制器的一种方式,可以理解为视图控制器压栈的过程)到一个ViewController中,这个ViewController...下方就是在表视图中实现的回调方法,具体请看代码中的注释: 1 //-----------EditViewControllerDelegate------------------ 2...上面的场景在iOS开发中极为常见,使用场景也是比较广泛的。所以协议无论在Swift还是在iOS开发中都是极为重要的概念之一。

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

    你可能需要为你的 APP 适配 iOS 11

    (command+向左的箭头让模拟器横屏) 横屏时,在iPhone上,tab上的图标较小,tab bar较小,这样垂直空间可多放置内容。...需要注意的是,你的constraints需要在view内部设置,所以如果你有一个自定义的标题视图,你需要确保任何约束只依赖于标题视图及其任何子视图。当你使用自动布局,系统假设你知道你在做什么。...要避免视图尺寸为0,可以从以下方面做: UINavigationBar 和 UIToolbar 提供位置 开发者则必须提供视图的size,有三种方式: 对宽度和高度的约束; 实现 intrinsicContentSize...; 通过约束关联你的子视图; 二....iOS11下不想使用Self-Sizing的话,可以通过以下方式关闭:(前言中提到的问题也是通过这种方式解决的) self.tableView.estimatedRowHeight = 0; self.tableView.estimatedSectionHeaderHeight

    1.7K60

    iOS 9 Storyboard 教程(一下)

    plist文件或者SQL文件中取,所以在视图控制器外部加载数据是很明智的....(Center)(在Attributes inspector下一个),这样无论你把这张图片放置到view的任何地方,它都是不伸展的....(在选中的菜单视图部分).这个stack view应该放到正确的位置上,之后橙色的约束错误就会消失了....现在将标签和图片视图都连到这些outlet上.在storyboard中导航到Connections Inspector,然后从Document Outline或者工作空间里选择PlayerCell.在Connections...(在另一方面,将原型cell的活动连接到视图控制器上的动作是非常好的.如果在你的cell上有自定义的按钮或者其他控件,你将会这么做的) ---- 现在你已经连接了这些属性,你可以简化数据源代码.在PlayersViewController

    3.1K20

    iOS - RxSwift 项目实战记录

    │ └── LXFViewController.swift // 主视图控制器 ├── Extension │ └── Response+ObjectMapper.swift // Response...tableView的数据源方法 Then // 提供快速初始化的语法糖 Kingfisher // 图片加载库 SnapKit // 视图约束库 Reusable...约定俗成的写法呢请参考如下方式 LXFModel.swift struct LXFSection { // items就是rows var items: [Item] // 你也可以这里加你需要的东西...(rx_disposeBag) 大功告成,接下来说说section序列的产生 ViewModel的规范 我们知道MVVM思想就是将原本在ViewController的视图显示逻辑、验证逻辑、网络请求等代码存放于...可以看到我为Output添加了一个序列,类型为我们自定义的LXFSection数组,在Input里面添加了一个请求类型(即要请求什么数据,比如首页的数据) 我们通过 transform 方法将input

    2.9K41

    iOS AutoLayout全解

    在iOS 7(Xcode5)开始,Autolayout的开发效率得到很大的提升,苹果官方也推荐开发者尽量使用Autolayout来布局UI界面,减少纯代码的方式。...关于[VFL官网]详细知识,请查看官方的介绍 AutoLayout IB使用方式 为了让布局能够在不同屏幕的size上都能够表现正常,我们需要对其增加“约束”。...注意:我在添加约束的时候有个选项叫做updateFrame 如果勾选 会直接将Frame调整到真实值 ,而不需要再次update 。...Tip 1,有时候约束太多的时候 我们可以给某个View起个假名字以起到唯一标识的作用。 2,View总是选不中怎么办?按 ctrl + shift + 单击。...将控制器改为Freedom 修改ContentView的高度约束 这样ScrollView 就可以滚动了。 ?

    4.6K60

    iOS开发常用之UI模糊效果、自动版式

    使用DEMO 视图居中显示,子视图含边距,视图等距离摆放,计算ScrollView的内容。 Classy - Classy是一个能与UIKit无缝结合stylesheet(样式)系统。...在代码中纯手工创建约束灰常痛苦,但幸运的是我们有了SnapKit,在板中用上它,你可以简单直观地编写约束了。...Auto-Layout-Showcase - swift,AutoLayout进阶演示,宽高比约束,比例约束,不等约束,视差约束,低优先级约束等高级用法,无需写码即可进行复杂页面布局,Demo还动态模拟了各屏幕下的效果...支持Cell,Label和Tableview高度自适应,致力于做最简单易用的AutoLayout库。 Neon.swift - 功能强大的UI布局神器。...EasyPeasy.swift - 编程方式自动布局框架库。

    1.6K30

    MyLayout&TangramKit 的重大升级!

    在设置约束依赖时将容器视图的上下左右分别依赖UIScrollView视图的上下左右边界,如果需要上下滚动则将容器视图中的最底部子视图的底部边界依赖容器视图的底部边界。...上面的约束设置实现视图滚动的机制也有一定的局限性!那就是一旦在容器视图中添加子视图时就需要重新调整容器视图的右边界和下边界的约束依赖。...然后在UITableViewCell的派生类的视图代码布局处或者在-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath...要实现UIScrollView滚动时,只需要在一个滚动视图内添加一个布局视图,然后将所有其他子视图都添加到这个布局视图中去,这个和上面的AutoLayout的处理方式是一样的,最后将布局视图的尺寸自适应属性设置为...因此如果想使用布局视图的尺寸自适应功能,那么在将布局视图的尺寸设置为wrap后,就可以像使用UILabel那样不用去设置布局视图的宽度约束和高度约束了。比如有两个兄弟视图A,B。

    2.1K20

    iOS开发遇到的一些小问题记录

    1. tableView下方出现莫名的空白 tableFooterView问题 一般来说,tableview会默认有一个footerview 解决:在视图加载时将这个footerview设为没有高度或者是空...contentSize的功能 即我们改变dataSource里的数据刷新视图的时候,tableview的总高度是被改变的,而这时自动计算出来的,不像scrollview是需要手动指定的。...解决:以源代码方式打开storyboard文件、检查是否有大量堆砌代码的图片文件。直接删除掉。 重新以视图方式打开,提示丢失文件,在画面中可以看到一个?图片。重新设置一张图片即可!...改成用 UIButton Action的方式有效,仔细搜索并分析发现问题主要是 在viewdidload周期内的segue会被最后更新的UI视图覆盖掉、也就是当前页面的主视图。所以看不出效果。...基于iOS自带的邮件反馈kit开发用户反馈功能 用Swift写一个发送邮件的iOS用户反馈 - 简书 9.

    81210

    iOS 面向协议方式封装空白页功能

    而Swift除了可以面向对象编程,它还可以面向协议编程。那可不可以也用协议来解决情况呢?...嘿嘿,这个可以有,那我们接下来就来试试怎么通过协议的方式来避免上述情况,并且实现一行代码添加空白页功能 前言 如果对面向协议有疑问的同学可以看下我之前的两篇文章 iOS - Swift 面向协议编程...(一) iOS - Swift 面向协议编程(二) 之前的文章中提到了,协议除了起规范作用,还有别一个用处,就是赋予能力。...我们现在的目的就是让目标控制器或者目标视图在遵守我们的协议后,就可以有实现空白页的功能。...可以使用Cocoapods的方式来安装使用 pod 'LXFProtocolTool' 我也将 iOS - Swift 面向协议编程(二) 中提及的通过协议便捷加载xib的功能也集成了进来。

    1.5K50

    你可能需要为你的 APP 适配 iOS11

    需要注意的是,你的constraints需要在view内部设置,所以如果你有一个自定义的标题视图,你需要确保任何约束只依赖于标题视图及其任何子视图。当你使用自动布局,系统假设你知道你在做什么。...6、Avoiding Zero-Sized Custom Views 自定义视图的size为0是因为你有一些模糊的约束布局。...要避免视图尺寸为0,可以从以下方面做: ● UINavigationBar 和 UIToolbar 提供位置 ● 开发者则必须提供视图的size,有三种方式: ① 对宽度和高度的约束; ② 实现 intrinsicContentSize...; ③ 通过约束关联你的子视图; 二、管理margins 和 insets 1、layout margins 基于约束的Auto Layout,使我们搭建能够动态响应内部和外部变化的用户界面。...iOS11下不想使用Self-Sizing的话,可以通过以下方式关闭:(前言中提到的问题也是通过这种方式解决的) iOS11下,如果没有设置estimateRowHeight的值,也没有设置rowHeight

    2.5K00

    按钮与交互-使用按钮触发操作

    在本节中,我们将介绍一个重要且简单的元素,即按钮。这个小元素可以改变整个UX。我们将使用该按钮来缩放我们的3D模型。此外,我们将尝试更改手机的壁纸。...在设置页面中,将显示名称更改为角度AR或所需名称。在资产目录中,将应用程序图标从assets文件夹拖放到选定的插槽中。 主要故事板 我们在屏幕上放置一些按钮。...确保约束视图的每一侧而不是安全区域。取消选中Constrain到边距。在布局中,将ARSCNView放在View下方,否则按钮将不会显示。 ?...在swift文件中,您将看到一个与之前的ARSCNView链接的IBOutlet。由于我们删除了那个,将新的ARSCNView链接到该Outlet。...解决方案是声明另一个变量并使其成为与iPhoneNode相同的节点。在根级别和渲染器内声明变量iPhoneXNode,将2个变量匹配在一起。

    4.6K20

    你可能需要为你的APP适配iOS11

    需要注意的是,你的constraints需要在view内部设置,所以如果你有一个自定义的标题视图,你需要确保任何约束只依赖于标题视图及其任何子视图。当你使用自动布局,系统假设你知道你在做什么。...Avoiding Zero-Sized Custom Views 自定义视图的size为0是因为你有一些模糊的约束布局。...要避免视图尺寸为0,可以从以下方面做: ● UINavigationBar 和 UIToolbar 提供位置 ● 开发者则必须提供视图的size,有三种方式:  ① 对宽度和高度的约束; ② 实现 intrinsicContentSize...; ③ 通过约束关联你的子视图; 二 管理margins 和 insets layout margins 基于约束的Auto Layout,使我们搭建能够动态响应内部和外部变化的用户界面。...iOS11下不想使用Self-Sizing的话,可以通过以下方式关闭:(前言中提到的问题也是通过这种方式解决的) iOS11下,如果没有设置estimateRowHeight的值,也没有设置rowHeight

    82820

    Swift-MVVM 简单演练(一)

    在基类控制器的setupUI(设置界面)的方法里面,我们直接创建了tableView,那么我们如果有一个标记,能根据这个标记来选择是创建普通视图,还是创建访客视图。就可以很好的解决此类问题了。...didSet方法以达到设置的目的。...plist并保存到本地 在swfit语法里,并没有直接将array通过write(toFile:)的方法。...总结 使用代理传递消息是为了在控制器和视图之间解耦,让视图能够被多个控制器复用,如TableView 但是,如果视图仅仅是为了封装代码,而从控制器中剥离出来的,并且能够确认该视图不会被其它控制器引用,...则可以直接通过addTarget的方式为该视图中的按钮添加监听方法 这样做的代价是耦合度高,控制器和视图绑定在一起,但是省略部分冗余代码 ---- 调整未登录时导航按钮 如果单纯的在setupVistorView

    10.3K51

    RxSwift介绍(一)——RxSwift初探

    之前介绍了RAC在Objective-C环境下RACSignal信号订阅使用流程、宏定义以及各种信号的操作使用。作为函数式响应编程的代表,就不得不提RxSwift。...在swift环境下,RAC的孪生兄弟RxSwift同样提供了相同的框架使用,并且基于swift语言的优点,RxSwift甚至能够更简洁地开发业务代码。关于RxSwift的优点,大把大把的人在夸。...我自己的感受是,虽然学习曲线比较陡峭,学习成本很高,一旦掌握了其开发技巧,收获要比想象中多,值得去学习并实践的框架。 接下来先看一个最常用的例子,swift环境中搭建一个简单的tableView。...tableView在swift环境下的实现 遵循的tableView代理方法还是一如既往的繁多 接下来,在使用RxSwift框架下改造上面的tableView,来感受下RxSwift的强大。...在视图控制器或者其持有者将要销毁的时候,会自动释放掉绑定在它上面的资源。它是通过类似“订阅处置机制”方式实现(类似于 NotificationCenter 的 removeObserver)。

    3.1K40

    android

    Masonry采取了链式编程的方式,代码理解起来非常清晰易懂,而且写完之后代码量看起来非常少。...在项目中设置的AutoLayout约束,起到对视图布局的标记作用。设置好约束之后,程序运行过程中创建视图时,会根据设置好的约束计算frame,并渲染到视图上。...所以在纯代码情况下,视图设置的约束是否正确,要以运行之后显示的结果和打印的log为准。 Masonry中的坑 在使用Masonry进行约束时,有一些是需要注意的。...实现这样的需求,实现方式有很多种,只是实现起来复杂程度和性能的区别。 在不考虑性能的情况下,tableView动态Cell高度,可以采取估算高度的方式。...方法内部已经执行过addSubview操作,但是UIView始终以最后一次添加的父视图为准,也就是redView始终是在最后一次添加的父视图上。

    73420
    领券