知识补充(UIPickerView的补充方法,使用self创建对象的好处,id和instancetype区别,KVC底层代码实现,文本框的两个代理方法)
1. PickerView 的几种 选中
1>让PickerView随机选中componet的某一行,只是选中,不会执行方法
[ self . pickerView selectRow : 1 inComponent : 0 animated : YES ];
2>主动选中,会继续执行didSelectRow方法,进行赋值等操作
[ self pickerView : nil didSelectRow : 1 inComponent : 0 ];
3>刷新UIPickerView某一列(当前第一列)
[pickerView reloadComponent : 1 ];
4>得到UIPickerView指定列下的行的索引(当前第一列)
[pickerView selectedRowInComponent : 1 ]
二者一般结合使用,前者选中行,后者显示在lable中(等)
2.在类方法创建当前对象,使用self而使用当前类名(Flag)的好处是
1> Flag *flag=[[Flag alloc] init];
2> Flag *flag=[[ self alloc] init];
让代码更有扩展性(比如说使用当前类名Flag创建对象,当前类的子类有自己特有的成员变量,而父类没有,这个时候如果调用父类的类方法创建子类对象,程序就会崩溃)
3.KVC底层代码实现
遍历字典里面所有Key
取出key,去对象里面,找有没有setKey方法
如果没有找到对应的set方法,又会去寻找对象里面有没有Key这个属性名
如果没有找到Key这个属性名,又会去寻找对象里面有没有_Key这个属性
4.一种设计思想
在plist中有只是给了图片名,但是需要展示图片情况下,可再模型类定义UIImage类型变量(变量要用strong修饰),然后重写其set方面将NSString转换为UIImage
@property ( nonatomic , strong ) UIImage * icon;
1>KVC会被字典里的Value传递过来,Value(Icon)类型在Plist文件中是NSString类型,但在成员变量中类型是UIImage
2>重写setIcon的目的就是,把NSString转换为UIImage
-( void )setIcon:( NSString *)icon
{
_icon =[ UIImage imageNamed :icon];
}
5.使用id和instancetype区别
id:有个功能:能调用任何对象在set,get方法
id:不能帮你检测代码是否出错
instancetype:自动识别当前类的对象
建议用instancetype
6. UIDatePicker的创建和基本使用
//1>创建UIDatePicker
UIDatePicker *datePicter=[[ UIDatePicker alloc ] init ];
//2>设置UIDatePicker的模式为UIDatePickerModeDate(年月日)
datePicter. datePickerMode = UIDatePickerModeDate ;
//3>设置UIDatePicker的地区(zh:中国)
datePicter. locale =[[ NSLocale alloc ] initWithLocaleIdentifier : @"zh" ];
_datePicter =datePicter;
//4>给UIDatePicker注册事件(监听)————此事件当UIDatePicker值发生改变时候触发事件
[datePicter addTarget : self action : @selector (datePicterChange:) forControlEvents : UIControlEventValueChanged ];
//**注意** 所有继承自UIControl的空间,都可以使用addTarget给其注册事件
//5>自定义文本框键盘 用inputView
birthdayView . inputView =datePicter;
7.文本框的两个代理方法
/**
* 作用:是否允许文本框输入内容
* 使用场合:在用户输入文本框内容的时候调用,目的是判断文本框是否允许输入
*/
- ( BOOL ) textField:( UITextField *)textField shouldChangeCharactersInRange:( NSRange )range replacementString:( NSString *)string
{
//不允许输入
return NO ;
}
/**
* 在文本框开始编辑的时候调用,刚调出键盘的时候调用
* 可以理解成文本框得到光标焦点的时候调用
*/
- ( void )textFieldDidBeginEditing:( UITextField *)textField
{
}
1. PickerView 的几种 选中
1>让PickerView随机选中componet的某一行,只是选中,不会执行方法
[ self . pickerView selectRow : 1 inComponent : 0 animated : YES ];
2>主动选中,会继续执行didSelectRow方法,进行赋值等操作
[ self pickerView : nil didSelectRow : 1 inComponent : 0 ];
3>刷新UIPickerView某一列(当前第一列)
[pickerView reloadComponent : 1 ];
4>得到UIPickerView指定列下的行的索引(当前第一列)
[pickerView selectedRowInComponent : 1 ]
二者一般结合使用,前者选中行,后者显示在lable中(等)
2.在类方法创建当前对象,使用self而使用当前类名(Flag)的好处是
1> Flag *flag=[[Flag alloc] init];
2> Flag *flag=[[ self alloc] init];
让代码更有扩展性(比如说使用当前类名Flag创建对象,当前类的子类有自己特有的成员变量,而父类没有,这个时候如果调用父类的类方法创建子类对象,程序就会崩溃)
3.KVC底层代码实现
遍历字典里面所有Key
取出key,去对象里面,找有没有setKey方法
如果没有找到对应的set方法,又会去寻找对象里面有没有Key这个属性名
如果没有找到Key这个属性名,又会去寻找对象里面有没有_Key这个属性
4.一种设计思想
在plist中有只是给了图片名,但是需要展示图片情况下,可再模型类定义UIImage类型变量(变量要用strong修饰),然后重写其set方面将NSString转换为UIImage
@property ( nonatomic , strong ) UIImage * icon;
1>KVC会被字典里的Value传递过来,Value(Icon)类型在Plist文件中是NSString类型,但在成员变量中类型是UIImage
2>重写setIcon的目的就是,把NSString转换为UIImage
-( void )setIcon:( NSString *)icon
{
_icon =[ UIImage imageNamed :icon];
}
5.使用id和instancetype区别
id:有个功能:能调用任何对象在set,get方法
id:不能帮你检测代码是否出错
instancetype:自动识别当前类的对象
建议用instancetype
6. UIDatePicker的创建和基本使用
//1>创建UIDatePicker
UIDatePicker *datePicter=[[ UIDatePicker alloc ] init ];
//2>设置UIDatePicker的模式为UIDatePickerModeDate(年月日)
datePicter. datePickerMode = UIDatePickerModeDate ;
//3>设置UIDatePicker的地区(zh:中国)
datePicter. locale =[[ NSLocale alloc ] initWithLocaleIdentifier : @"zh" ];
_datePicter =datePicter;
//4>给UIDatePicker注册事件(监听)————此事件当UIDatePicker值发生改变时候触发事件
[datePicter addTarget : self action : @selector (datePicterChange:) forControlEvents : UIControlEventValueChanged ];
//**注意** 所有继承自UIControl的空间,都可以使用addTarget给其注册事件
//5>自定义文本框键盘 用inputView
birthdayView . inputView =datePicter;
7.文本框的两个代理方法
/**
* 作用:是否允许文本框输入内容
* 使用场合:在用户输入文本框内容的时候调用,目的是判断文本框是否允许输入
*/
- ( BOOL ) textField:( UITextField *)textField shouldChangeCharactersInRange:( NSRange )range replacementString:( NSString *)string
{
//不允许输入
return NO ;
}
/**
* 在文本框开始编辑的时候调用,刚调出键盘的时候调用
* 可以理解成文本框得到光标焦点的时候调用
*/
- ( void )textFieldDidBeginEditing:( UITextField *)textField
{
}