didMoveToSuperview方法认识和使用
由来:
今天给项目添加新功能——点击弹出阳历,阴历日期选择。
弹出日期选择是弹出的控制器,里面的日期选择控件是封装的View,View使用Xib画的,
遇到的问题是:控制器传数据给View,在awakeFromNib里面进行DatePicker设置去数据是nil。
解决办法:
1.直接在didSet方法配置datePicker:
var defaultBirthday: String? {
didSet {
let dformatter = DateFormatter()
dformatter.dateFormat = "yyyy-MM-dd"
datePicker.datePickerMode = .date
//将日期选择器区域设置为中文,则选择器日期显示为中文
datePicker.locale = Locale(identifier: "zh_CN")
datePicker.maximumDate = Date()
// 时区
let GMTzone = NSTimeZone.init(forSecondsFromGMT: )
dformatter.timeZone = GMTzone as TimeZone!
// 当前日期
let date = Date()
let strNowTime = dformatter.string(from: date) as String
var firstDate: Date = dformatter.date(from: strNowTime)!
if (defaultBirthday?.length != ) {
firstDate = dformatter.date(from: defaultBirthday!)!
}
let dateString: String = dformatter.string(from: firstDate) as String
firstDate = dformatter.date(from: dateString)!
// 设置默认时间
datePicker.setDate(firstDate, animated: true)
datePicker.addTarget(self, action: #selector(dateChanged),
for: .valueChanged)
}
}
2.在didMoveToSuperview方法设置datePicker数据即可:
override func didMoveToSuperview() {
super.didMoveToSuperview()
}
总结:
1.didMoveToSuperview方法官方解释如下:
Tells the view that its superview changed.
大致意思: 当view的父级视图更改的时候会调用此方法。
The default implementation of this method does nothing. Subclasses can override it to perform additional actions whenever the superview changes.
大致意思:此方法默认实现,不做任何操作。子视图可以实现此方法,添加自己所需要的功能
通过以上我们可以理解为 此方法在view被添加新的父级视图的时候会调用。
现在是不是明白为什么在awakeFromNib取值是nil,在didMoveToSuperview就可以取到值了。
2.String转Date的时候会造成时区问题差8个小时,解决方法如下:
//将日期选择器区域设置为中文,则选择器日期显示为中文
datePicker.locale = Locale(identifier: "zh_CN")
datePicker.maximumDate = Date()
// 时区
let GMTzone = NSTimeZone.init(forSecondsFromGMT: )
dformatter.timeZone = GMTzone as TimeZone!
3.系统的UIDatePicker控件不滚动控件是取不到当前日期值的,这个依产品需求吧,可以使用datePicker.date属性直接取当前日期即可。
暂时记录这么多,后续会遇到问题,解决问题,记录问题哟
MVC架构模式 MVC(Model-View-Controller)是实现数据和显示数据的视图分离的架构模式(有一定规模的应用都应该实现数据和显示的分离).其中,M代表模型,就是程序中使用的数据和 ... 本文原文请见:http://www.raywenderlich.com/46988/ios-design-patterns. 由 @krq_tiger(http://weibo.com/xmuzyq) ... 一.编译器特性 1.ARC. ARC是编译器特性.项目中使用了ARC,编译器会在项目编译的时候自动添加OC对象计数器release代码.并且使用了ARC,项目中将不允许出现release.retain ... 一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ... 要通过监听HeaderView上面的Button来进行操作: 通过addTarget方法即可,应该将按钮的点击方法封装在HearView控制器内部. 列表收起来的原理: tableView: numb ... 一.Model // // FriendsModel.h // IOS_0111_好友列表 // // Created by ma c on 16/1/11. // Copyright (c) 201 ... JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ... 第一.initWithNibName这个方法是在controller的类在IB中创建,但是通过Xcode实例化controller的时候用的. 第 二.initWithCoder 是一个类在IB中创建 ... addSubview: 添加一个子视图到接收者并让它在最上面显示出来.- (void)addSubview:(UIView *)view[讨论]这方法同样设置了接收者为下一个视图响应对象.接收者保留视 ... 1.范围日期的查询: select * from goods where g_time betweento_date('2018/12/26 10:01:59','yyyy-MM-dd hh:mi:s ... 1.选举相关概念: 选票:(myid,zxid,当前节点选取轮次,被推举服务器选举轮次,状态(looking)). 选举发生情况:启动时选举,运行时选举. 外部投票:其他服务器发送来的投票. 内部投票 ... docker build 构建自己的镜像文件. 1.在本地工程中运行生成一个springboot的可运行的jar. 因为我习惯用eclipse,所以在eclipse下新建一个springboot的工程 ... 1.@JoinColumn: 用于指定 连接实体关联或元素集合的列. 属性 name: 外键列的名称,它所在的表取决于上下文. 如果连接是使用外键映射策略的一对一或多对一映射,则外键列位于源实体或可嵌 ... 以CentOS为例,安装后是没有C语言和C++编译环境的,需要手动安装,最简单的是用yum的方式安装,过程如下: 1.安装gcc yum install gcc 询问是否,按y键回车即可,或者 yum ... 嘟嘟嘟 离NOI最后一周,把自己容易忘的知识点和板子复习一下. (刚答完loj的笔试模拟,感觉上不了90--) update:哦,我89-- 先把式子写出来,每一个妖怪的战斗力\(S(i) = A + ... 流行的ReactNative.Node.js.Angular.js.RXjs等技术 H5视频直播 ReactNative应用 JavaScript的新语法 高性能服务端框架 Webpack支撑大规模应 ... error 14从未见过.谁能帮我解答什么情况才会出现这个,而且怎么定位崩溃函数地址? 备忘: segfault at 引起故障的地址ip 指令的内存地址sp 堆栈指针地址, 及栈顶指针err is ... 转载请注明出处:https://www.cnblogs.com/lialong1st/p/12004080.html 最新的win10引入了Linux子系统,这样就免去了安装虚拟机或者双系统的麻烦. ... 算法参照Perl字符贪吃蛇,源码: #include <stdio.h> #include <windows.h> #define WIDTH 12 // 宽 #define ...didMoveToSuperview方法认识和使用的更多相关文章
随机推荐