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[讨论]这方法同样设置了接收者为下一个视图响应对象.接收者保留视 ... Python的定位是“优雅”.“明确”.“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序. 开发效率非常高,Pyt ... JS判断不同web访问环境,主要针对移动设备,提供相对应的解析方案(判断设备代码直接copy腾讯网的) // 判断是否为移动端运行环境 if(/AppleWebKit.*Mobile/i.test(n ... 题意:有一个m 行n 列的矩形方格棋盘,1 < = m< = 5,1=< n< =10^9,用1*2 的骨牌(可横放或竖放)完全覆盖,骨牌不能重叠,有多少种不同的覆盖的方法.你 ... oracle安装时出现以下问题: 原因:未配置环境变量CLASSPASH 解决方法:新增系统变量 变量名:CLASSPASH 变量值: .;%JAVA_HOME%\lib;%JAVA_HOME%\li ... 链接: https://blog.csdn.net/u013946356/article/details/81736232 一.概述 1.在应用程序中我们有两类,一种是有状态一种是无状态.此前一直演示的是deployment管理的应用,比如nginx或者我们自己定义的myapp它们都属于无状态应用. 2.而对于有状态应用, ... 变异方法:说白了就是对原方法进行了包装,包装后实现了2个功能1:实现原方法的功能;2.更新界面. 1.test009.html <!DOCTYPE html><html lang=& ... import java.awt.*; import java.awt.event.*; public class SimpleMenu { private Frame f = new Frame(&q ... 1.启动和停止服务 一)启动和停止 #启动服务: $sudo service mysql start #停止服务: $sudo service mysql stop 二)创建和选择数据库 [创建数据库 ... 加强前这道题还是比较友好的 首先我们设\(g_x\)为x对情侣没有一对坐在一起的数量 然后答案就可以表示成:\(C_n^k*A_n^k*2^k*g_{n-k}\) 这里的复杂度是\(O(T*N)\), ...didMoveToSuperview方法认识和使用的更多相关文章
随机推荐