06-导航控制器的基本使用

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

01-pickerView简单使用一.UipickerViewDataSource

// 返回有多少列

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView;// 返回第component有多少行

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component;

二.UIPickerViewDelegate

// 返回第component列多宽

- (CGFloat)pickerView:(UIPickerView *)pickerView widthForComponent:(NSInteger)component// 返回第component列多高

- (CGFloat)pickerView:(UIPickerView *)pickerView rowHeightForComponent:(NSInteger)component// 返回第component列第row行标题

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component// NSAttributedString:富文本,可以描述文本的外观属性,颜色,字体,阴影,空心,图文混排//- (NSAttributedString *)pickerView:(UIPickerView *)pickerView attributedTitleForRow:(NSInteger)row forComponent:(NSInteger)component// 返回第component列第row行视图控件

- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view// 当用户选中某一行的时候调用// 选中第component列第row行的时候调用// 可以监听pickerView滚动

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component

02-注册界面一.UITextFieldDelegate

// 是否允许改变文本框的文字// 是否允许用户输入文字// 作用:拦截用户的输入

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

{returnNO;

}// 是否允许开始编辑// 允许编辑文本框

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField// 是否允许文本框结束编辑

- (BOOL)textFieldShouldEndEditing:(UITextField *)textField

二.自定义键盘 键盘由文本框inputView属性决定

三.KVC底层实现

// setValuesForKeysWithDictionary底层实现// 利用KVC字典转模型,

[flag setValuesForKeysWithDictionary:dict];// 1.遍历字典中的所有key

[dict enumerateKeysAndObjectsUsingBlock:^(id key,id obj,BOOL *stop) {// 2.给模型的属性赋值,利用KVC,把字典中的key当做模型的属性名使用,字典中的值传递给模型的属性.

[flag setValue:obj forKey:key];// name -> icon// KeyPath:模型中的属性名// 属性的值// [flag setValue:dict[@"name"] forKey:@"name"];// [flag setValue:dict[@"icon"] forKey:@"icon"];

}];// setValue:forKey:底层实现// 给模型中的icon属性赋值// [flag setValue:dict[@"icon"] forKey:@"icon"];// 1.首先去寻找模型中有木有setIcon:方法,直接调用setIcon:方法,[flag setIcon:dict[@"icon"]]// 2.接着寻找模型中有没有icon的属性名,如果有,就直接赋值 icon = dict[@"icon"]// 3.接着寻找模型中有没有_icon的属性名,如果有,就直接赋值 _icon = dict[@"icon"]// 4.找不到,直接报错,setValue:forUndefinedKey:

四.UIDatePicker

// 创建一个UIDatePicker

UIDatePicker *datePicker = [[UIDatePicker alloc] init];// 设置日期模型

datePicker.datePickerMode = UIDatePickerModeDate;// 设置地区,zh:中国

datePicker.locale = [NSLocale localeWithLocaleIdentifier:@"zh"];// 监听UIDatePicker的选中的日期

[datePicker addTarget:self action:@selector(dateChange:) forControlEvents:UIControlEventValueChanged];

03-通过storyboard加载控制器一.UIStoryboard:帮你加载storyboard文件

// UIStoryboard : 帮你加载storyboard文件// 加载storyboard文件// name:storyboard文件名,不需要后缀名

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];// 创建storyboard描述的控制器// instantiateInitialViewController帮你加载箭头指向的控制器UIViewController *vc = [storyboard instantiateInitialViewController];// 根据标识符创建storyboard描述的控制器// UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"org"];

04-通过xib创建控制器一.通过xib创建控制器原因:

是想通过Xib描述控制器的view 二.如何通过xib创建控制器

1.让xib与控制器产生联系,设置xib的文件拥有者是控制器,这时候xib就描述这个控制器2.连线,告诉控制器是哪个view在描述

05-控制器的view创建一.loadView

什么时候调用:当第一次使用控制器的view的时候就会调用

作用:加载控制器的view,自定义控制器的view

注意:

1.只要重写loadView,必须自己手动创建控制器的view

2.在没给_view赋值之前,不能调用self.view;

二.loadView加载流程

三.xib加载控制器的view

init底层会调用initWithNibName:bundle:

// 通过xib创建XMGViewController控制器的view// 1.判断下nibName有没有值,如果有值,就会去加载nibName指定的xib// 2.如果nibName为空,会先去查找有没有XMGView.xib,如果有就去加载// 3.如果没有XMGView.xib,就会去加载根类名同名的xib:XMGViewController.xib// 4.如果还没有找到,就生成一个空的view

四.控制器的view延迟加载

五.控制器view默认的是几乎透明的

06-导航控制器的基本使用一.导航控制器必须要有一个根控制器

二.如果是导航控制器的子控制器可以直接拿到导航控制器

三.initWithRootViewController底层其实是调用导航控制器的push方法,把vc成为导航控制器的子控制器

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航