iOS开发--Swift 最近项目开发中遇到的一些小问题与解决方法

1, Swift 修改导航栏颜色

self.navigationController?.navigationBar.barTintColor

2, Swift button

属性设置时直接进行初始化

var leftButton : UIButton = UIButton(type: UIButtonType.Custom)

由于是read-only属性, 所以不可以后修改, 直接在初始化的时候设置.

Type不推荐用system, 会自动渲染成蓝色.

3, Swift的Bool类型

还是一贯的不允许隐式转换, 所以不可以在OC中0, 1或者直接判断对象存在即为真, 而是要通过逻辑判断, 比如 && || == 这种运算符得到Bool类型的返回值

button添加触发方法只需要在action参数中, 直接写出方法名的字符串即可, 好明显的函数指针既视感.

4, 可选类型(Optional)

对于不确定是否存在的参数类型, 抑或是对象类型, 要加?, 代表不确定是否为空, 在确定不为空的情况下用!.

5, 显示转换

决不允许隐式转换, 语法都过不去的, 所以对于一些特定情况, 比如for var i = 0; i < n ; ++i循环生成图片, 在frame设置中, 一定要转换成CGFloat(), 再就是要用++i, 而不是i++.

6, 结构体类型对象

所有的结构体类型对象都有自带的实例方法, 而不见得非要使用CGRectMake()这种, 直接CGRect(就会索引出实例的构造方法了.

7, 结构体是值类型, 类对象是引用类型

值类型, 引用类型不多解释, 了解面向对象语言的同学都知道, Swift中的主要的数据类型都是结构体, 比如Int, Array, Dictionary等等.

8, init方法继承重写

不要忘记关键字(override), 先进行父类方法初始化, 不需要返回对象了, 同时也别忘记init?(coder aDecoder: NSCoder)方法, 否则会报错的

9, 成员变量

成员变量设置的时候, 实际就已经进行过初始化了, 所以并不需要在代码中再次进行初始化, 直接设置属性即可. 这个和OC中的属性有点差别.

10, collectionView作为成员变量

必要要写完整的实例化方法, frame和flowLayout的设置在代码中重新设置, 否则会内存出错, 提示没有flowLayout.

目前简单的遇到这么多, 以后再遇到问题, 再来补充.

时间: 2024-10-13 07:00:04

iOS开发--Swift 最近项目开发中遇到的一些小问题与解决方法的相关文章

Unity3D游戏开发之虚拟现实项目开发流程

Unity3D游戏开发之虚拟现实项目开发流程 欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. 一.系统设计与资料的收集与整理 1.              与项目投资单位沟通并进行系统设计: 2.              收集整理规划图.效果图.现场照片: 3.              拍摄比干文化及景区介

Mint-ui中loadmore(上拉加载下拉刷新)组件在ios中滑动会触发点击事件的解决方法

bug说明: Mint-ui中loadmore(上拉加载下拉刷新)组件 在 使用fastclick的情况下 ,在ios设备中滑动会触发点击事件: 解决方法: 我是按需引入,去项目中找到loadmore下的index.js,全部引入的要找mint下面mint-ui.common.js 路径如下:你的项目名/node_modules\mint-ui\lib\loadmore\index.js 搜索 handleTouchEnd ,记得写event进去 handleTouchEnd: function

关于CUDA C 项目中“ error C2059: 语法错误:“&lt;” ”问题的解决方法

该问题的关键在于理解CUDA项目中C\C++文件需要由c++编译器进行编译,而CUDA C的源文件需要由CUDA的编译器nvcc.exe进行编译. 发生该语法错误的原因是cu文件被C++编译器所编译,C++编译器无法识别 "<<<",导致报错. 为什么cu文件会被C++编译器所编译呢?原因在于我们使用#include将cu文件包含到了C++文件中.对于#include的用途,更简单的理解就是把几个文件合并成一个文件,所以,当编译C++文件中,包含其中的cu文件也会被编

创建django项目出现AttrbuteError module &#39;pip&#39; has no attribute &#39;main&#39;解决方法

由于升级pip到10.0,创建django出现AttrbuteError module 'pip' has no attribute 'main'错误,解决方法有两种 一:找到/Applications/PyCharm.app/Contents/helpers/packaging_tool.py在头部加上 import pip._internal as pip_new 然后分别修改文件中的这两行中的pip return pip.main(['install'] + pkgs) return pi

【原创】关于flexviewer中引入图表时报的TypeError #1009解决方法

在自定义的widget中引入图表后,运行时出现TypeError #1009错误.本人网上查找了很多资料,其中大部分都是关于Flash中的动画效果问题,与这里的问题关系型不太大.故把问题的解决方法写在这里,与人方便,与己方便. 方法一: 1.在自定义的widget中添加如下两个方法: private function copyStyleFromParent(selector:String):void { var chartBaseStyle:CSSStyleDeclaration = style

jquery-easyui的datagrid在checkbox多选时,行选中不对应,去除高亮的解决方法

jquery-easyui的datagrid在checkbox多选时,行选中不对应,去除高亮的解决方法 工作中用到一个具有多选功能的easyui-datagrid在处理cell的点击事件时,不允许被选中行的需求. 如下图,点击"查看"时,只是为了查看详细信息,并不是需要选择行. 完成这个需求,其实只需要将datagrid的checkOnSelect属性设置为false就可以了. 然而,当设置该属性后,新的问题就随之出现了. 目前的办法是使用以下代码去除高亮:  (本来是打算处理成c

ASP.NET MVC中对Model进行分步验证的解决方法

原文:ASP.NET MVC中对Model进行分步验证的解决方法 在我之前的文章:ASP.NET MVC2.0结合WF4.0实现用户多步注册流程中将一个用户的注册分成了四步,而这四个步骤都是在完善一个Model的信息,但是又分页面填写信息的,当时我加上ModelState.IsValid这句验证代码的时候,根本没法通过验证,因为在注册的前面三步,注册用户的Model信息都没填写完整,而ModelState.IsValid是对一个实体的所有属性进行判断验证的.当时很纠结,因为刚接触Asp.net

Myeclipse中文件已经上传到服务器目录下,文件也没有被占用,但是页面中无法读取和使用问题的解决方法

这个问题是由于Myeclipse中文件不同步引起的.在Myeclipse中,工程文件是由Myeclipse自动扫描添加的,如果在外部修改了工程目录中的文件但又关闭了自动刷新功能,则会引起文件不同步.此外,在外部没有修改Myeclipse工程中的文件也有可能引起该问题. 解决方法: 有两种解决方法: 1)手动刷新.即在Myeclipse的工程目录中,右键refresh(或者按下F5). 2)配置Myeclipse的选项: a)Myeclipse启动时,刷新workspace,即勾选:window-

Win7中右下角“小喇叭”声音图标消失的解决方法?(已解决)

1.打开任务管理器. 2.右键explorer.exe选择右键结束. 3.在按ctrl+shift+Esc,或者用alter+tab切换到任务管理器. 4.文件--新建任务,输入explorer.exe,这就恢复了. Win7中右下角"小喇叭"声音图标消失的解决方法?(已解决)