首页 > 系统 > iOS > 正文

IOS开发学习笔记(二)

2019-11-07 23:25:00
字体:
来源:转载
供稿:网友

++ xib ++ xib文件实质是一个xml文件,类似于android用于描述界面;要先设置File’s Owner中的class属性(目的是在xib中能找到Owner中的方法,类似android中xml与View的绑定);并建立File’s Owner跟控件间的联系 [[NSBundle mainBundle] loadNibNamed:@”RowView” owner:self options:nil] 加载过程: 解析xib的xml文件 —-> 创建Objects下所有对象(xml所有控件)—->根据xml的控件及设定的属性生成设置的相关代码(同手动创建控件的一样)—->添加连线的事件(同手动用代码创建的一样)—-> 返回创建好的对象数组 [即是解析xib文件,根据xml描述生成创建控件、设置属性、添加事件的代码,并放在一个数组中返回] [但一般不用xib的File’s Owner绑定控件中的事件,这样耦合度高。使该View不能被其他ViewController使用;可使用Tag取得控件并添加事件;但常用的是MVC模式,即一个xib用一个view来控制(类似于android中创建一个view.xml然后创建一个View类,通过该View类控制view的生成及数据填充)如下:

+(id)rowView{ //可在这里面设置图标和label return [[NSBundle mainBundle] loadNibNamed:@"RowView" owner:nil options:nil][0];}+(id)rowView:(NSString *)icon name:(NSString *)name{ UIView *view = [RowView rowView]; UIButton *iconBtn = (UIButton *)[view viewWithTag:1]; [iconBtn setImage:[UIImage imageNamed:icon] forState:UIControlStateNormal]; UILabel *nameLabel = (UILabel *)[view viewWithTag:2]; nameLabel.text = name; return view;}

也可不用viewWithTag与寻找控件,可直接绑定控件到xib 1、将File’s Owner的class置空; 2、设置View的class为创建的view名(RowView);将View下的控件与列表中出现的属性名连线绑定;

+(id)rowViewIcon:(NSString *)icon withName:(NSString *)name{ RowView *view = (RowView *)[RowView rowView];// UIButton *iconBtn = (UIButton *)[view viewWithTag:1]; [view.iconBtn setImage:[UIImage imageNamed:icon] forState:UIControlStateNormal];// UILabel *nameLabel = (UILabel *)[view viewWithTag:2]; view.nameLable.text = name; return view;}

++ UIScrollView ++ scroll.showsVerticalScrollIndicator :滚动条 scroll.bounces;//弹簧效果 scroll.contentInset://在指定的方向上增加额外的区域 scroll.contentSize://滚动范围 scrollView.contentOffset://scrollView滚动的位置,可用代码来控制图片滚动及分页的索引 UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@“2.jpg”]];//可直接创建带图片的imageView,创建出来的imageView默认和图片的宽高一样

** 说明:-True-YES-true objective-c 中的BOOL 实际上是一种对带符号的字符类型(signed char)的类型定义(typedef),它使用8位的存储空间。通过#define指令把YES定义为1,NO定义为0。 注意:objective-c 并不会将BOOL作为仅能保存YES或NO值的真正布尔类型来处理。编译器仍将BOOL认作8位二进制数,YES 和 NO 值只是在习惯上的一种理解。 问题:如果不小心将一个大于1字节的整型值(比如short或int)赋给一个BOOL变量,那么只有低位字节会用作BOOL值。如果该低位字节刚好为0(比如8960,写成十六进制为0x2300),BOOL值将会被认作是0,即NO值。而对于bool类型,只有true和false的区别,即0为false,非0为true。

++ UITableView ++ 类似于 android 中的ListView,但功能比ListView强大(类似android中的ExpendListView); 设置数据源:实现代理: 方法:

#PRagma mark 数据源方法,第section组一共多少行,,若不实现,默认就是一组-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;#pragma mark 一共多少组(类似android的getCount)-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView#pragma mark 返回每一行显示的内容(类似android中Adapter中的getView)-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath#pragma mark 返回每一行的头部标题-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section#pragma mark 返回每一行的尾部注释-(NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section#pragma mark 返回右边的索引列表-(NSArray<NSString *> *)sectionIndexTitlesForTableView:(UITableView *)tableView//设置右边的图片,此处是没向右的箭头 cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; //自定义右边的图片,此处是为一个加号 cell.accessoryView = [UIButton buttonWithType:UIButtonTypeContactAdd;#pragma mark 取消选中该行-(void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

+单组展示 +设置组数为1即可 UITableViewDelegate为table的代理方法可高,可设置列表的高宽

#pragma mark 设置每一行的高度,UITableViewDelegate下的代理方法-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

+对话框+(类似android)

alert.alertViewStyle =UIAlertViewStyleLoginAndPassWordInput;//自带两个输入框,用户名和密码[alert textFieldAtIndex:0].text =name;//访问每一个文本框并设值//使用自定义的xib的view,但创建的rowItem须指定Custom Class为自己的Cell类型[_tableView registerNib:@"rowItem" forCellReuseIdentifier:@"key”];

博客地址:IOS开发学习笔记(二)


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表