ios 中零散的小功能

来源:互联网 发布:sql漏洞检测工具 编辑:程序博客网 时间:2024/05/16 00:46
tableview自带的删除cell的功能当我们的控制其实现了UITablleViewDelegate,然后在调用tableview的setEditing:animated:的时候[myTableView setEditing:!myTableView.editing animated:YES];
就会自动的调用tableView: editingStyleForRowAtIndexPath:
这两个是UITableView的代理方法:

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{    if (tableView.editing) {        return UITableViewCellEditingStyleDelete;    }else{        return UITableViewCellEditingStyleNone;    }}

根据他的返回值来决定我们tableview的样式:

UITableViewCellEditingStyleDelete对应的样式,我们可以通过tableView的editing来区分当前显示的样式

当我们的点击Delete时会自动的调用 tableView:commitEditingStyle:editingStyle forRowAtIndexPath:

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{    testNum--;    [tableView reloadData];//布局bug}
在这个方法里面利用deleteRowsAtIndexPaths:(NSArray) withRowAnimation:方法删除cell

其中NSArray是一个NSIndexPath的数组可以删除多个cell

kvo(键值监听):

我们利用kvo实现程序之间的通讯,他的优点就是可以监听到模型对象中的值得变化.适合做视图的更新功能等.

这里说说他和代理和通知之间的不同,对于代理我们的程序要检测到一个对象模型中数据的变化,就需要在对象模型中拥有控制器的引用,当模型数据改变的时候通知控制器,然而控制器的数据来源有事模型,所以也要有模型的引用,这样一开,就造成了互相的引用.对于通知来说每当模型中数据改变的时候都需要向通知中心发送消息,这样显然还需要通过消息中心来实现通知,比较繁琐.而kvo就是解决这里问题的比较好的方法.当Model中的数据在某处修改了,引用到他的控制器就会收到监听,从而可以自己作调整.

用到的方法:

-(void)addobserver:(监听者)forkeypath:(被监听模型的成员字段):options:context://被监听的模型调用这个方法

-(void)removeobserver:forkeypath://对象销毁是删除监听


-observievalueforkeypath:(被监听模型的成员字段)ofobject:(被监听的对象)changes:(新数据的数组key:new,old)context;//需要控制其重写的方法

我们在实现的时候只要在控制器中引用了模型,并调用模型的添加kvo监听方法,最后重写回掉的方法,这样当模型的数据被修改是,我们的控制器就会自动的做出反映了

0 0
原创粉丝点击