由来:

今天给项目添加新功能——点击弹出阳历,阴历日期选择。

弹出日期选择是弹出的控制器,里面的日期选择控件是封装的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属性直接取当前日期即可。

暂时记录这么多,后续会遇到问题,解决问题,记录问题哟

didMoveToSuperview方法认识和使用的更多相关文章

  1. UIView详解

    MVC架构模式   MVC(Model-View-Controller)是实现数据和显示数据的视图分离的架构模式(有一定规模的应用都应该实现数据和显示的分离).其中,M代表模型,就是程序中使用的数据和 ...

  2. IOS设计模式之三(适配器模式,观察者模式)

    本文原文请见:http://www.raywenderlich.com/46988/ios-design-patterns. 由 @krq_tiger(http://weibo.com/xmuzyq) ...

  3. iOS 通览(一) - 技巧、特性及规范

    一.编译器特性 1.ARC. ARC是编译器特性.项目中使用了ARC,编译器会在项目编译的时候自动添加OC对象计数器release代码.并且使用了ARC,项目中将不允许出现release.retain ...

  4. 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...

  5. (二十八)QQ好友列表的展开收缩

    要通过监听HeaderView上面的Button来进行操作: 通过addTarget方法即可,应该将按钮的点击方法封装在HearView控制器内部. 列表收起来的原理: tableView: numb ...

  6. IOS UI-QQ好友列表

    一.Model // // FriendsModel.h // IOS_0111_好友列表 // // Created by ma c on 16/1/11. // Copyright (c) 201 ...

  7. javaSE27天复习总结

    JAVA学习总结    2 第一天    2 1:计算机概述(了解)    2 (1)计算机    2 (2)计算机硬件    2 (3)计算机软件    2 (4)软件开发(理解)    2 (5) ...

  8. initWithNibName&initWithCoder &awakeFromNib&UIView常见属性方法

    第一.initWithNibName这个方法是在controller的类在IB中创建,但是通过Xcode实例化controller的时候用的. 第 二.initWithCoder 是一个类在IB中创建 ...

  9. UIView中常见的方法总结

    addSubview: 添加一个子视图到接收者并让它在最上面显示出来.- (void)addSubview:(UIView *)view[讨论]这方法同样设置了接收者为下一个视图响应对象.接收者保留视 ...

随机推荐

  1. Django REST framework认证权限和限制和频率

    认证.权限和限制 身份验证是将传入请求与一组标识凭据(例如请求来自的用户或其签名的令牌)相关联的机制.然后 权限 和 限制 组件决定是否拒绝这个请求. 简单来说就是: 认证确定了你是谁 权限确定你能不 ...

  2. 谈MongoDB的应用场景

    转载自:http://blog.csdn.net/adparking/article/details/38727911 MongoDB的应用场景在网上搜索了下,很少介绍关于传统的信息化应用中如何使用M ...

  3. 搭建使用PHPstorm环境

    本周学习内容: 1.学习PHP: 2.复习技能表: 3.学习正则表达式: 实验内容: 1.安装PHPstorm环境,破解PHPstorm: 2.PHPstorm运行PHP代码 3.PHPstorm安装 ...

  4. 洛谷P1706全排列问题

     P1706 全排列问题 题目描述 输出自然数1到n所有不重复的排列,即n的全排列,要求所产生的任一数字序列中不允许出现重复的数字. 输入输出格式 输入格式: n(1≤n≤9) 输出格式: 由1-n组 ...

  5. firefox设置

    如果长期使用linux(我常使用的是fedora)的朋友,就会知道,默认情况下,只要是这台linux再内网,开机几个小时后就无法再访问 google 和webqq 这些网站了并且打开一些网站也是要话上 ...

  6. P3719 [AHOI2017初中组]rexp——递归模拟

    P3719 [AHOI2017初中组]rexp 没有什么算法的题做起来真不适应,这道题深深讽刺了我想用栈维护匹配括号个数的想法: 递归解决就行了: 时刻注意函数返回值是什么,边界条件是什么: #inc ...

  7. ubuntu之路——day8.3 RMSprop

    RMSprop: 全称为root mean square prop,提及这个算法就不得不提及上篇博文中的momentum算法 首先来看看momentum动量梯度下降法的过程: 在RMSprop中: C ...

  8. Go -- client 302 自动转 200 问题 cookie存储 模拟登陆问题

    不久前用go写了个http client,去模拟某网站(*.com)的登录操作.网站的登录逻辑:1.验证登录账号和密码:2.下发token.此token通过cookie下发:3.redirect到主页 ...

  9. cmd命令net和sc

    来看windows中启动和关闭服务的方法:在cmd下可有两种方法打开,分别是net和sc. 1.net用于打开没有被禁用的服务, NET命令是功能强大的以命令行方式执行的工具. 它包含了管理网络环境. ...

  10. Cent0S 6.7直接在/etc/resolv.conf文件下修改DNS地址重启不生效问题【转】

    CentOS 6.7/Linux下设置IP地址 1:临时修改: 1.1:修改IP地址 # ifconfig eth0 192.168.2.104 1.2:修改网关地址 # route add defa ...