美文网首页iOS Developer
IOS开发学习笔记(二)

IOS开发学习笔记(二)

作者: 南山伐木 | 来源:发表于2017-02-25 18:57 被阅读32次

    +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);
    设置数据源:实现代理:<UITableViewDataSource>
    方法:

    #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开发学习笔记(二)

    相关文章

      网友评论

        本文标题:IOS开发学习笔记(二)

        本文链接:https://www.haomeiwen.com/subject/uydnwttx.html