HY项目中问题总结(tableview 的细节处理以及基类的使用)

来源:互联网 发布:在淘宝上开网店程序 编辑:程序博客网 时间:2024/05/01 13:57

1. tableview sectionHeaderView 作为筛选框,点击实现弹出框

难点:因为在tableview滑动的时候,sectionheaderview是能够停滞在顶部,从而为弹出框的定位以及父控件的选择增加了困难;

解决关键:采用坐标转换,筛选按钮点击时,需要做下面两件事:

1).创建和屏幕一样或者在tableview的父控件一样大的view,颜色设置为透明

2) . 通过sectionHeaderView上面的点击按钮的frame 进行坐标转化,转化成蒙板上的坐标

CGRect newRect = [self.viewconvertRect:sectionHeaderView.selectBtn.framefromView:self.sectionheaderView];

3). 在蒙板上创建弹出框,并且在蒙板上添加手势,使蒙板从父控件移除


问题1:会出现手势冲突,因为弹出框很有可能是tableview,cell 有点击动作

解决:使用手势的代理方法,具体操作如下:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    if ([NSStringFromClass([touch.viewclass]) isEqualToString:@"UITableViewCellContentView"]) {

        returnNO;

    }

    returnYES;

}

问题2: 反复的点击创建,会造成性能差

解决:使用懒加载的方式


2. 在基类的view上添加搜索框或者其他一些共有的控件,而遇到不同界面有的需要有得不需要,在具体界面布局的时候就容易出现frame的设置问题

解决方案:重写基类添加相同控件的方法,在界面中自己重新添加,通过代理/通知 实现界面跳转或者值传递


3. 在设置界面从本地选择图片,添加头像,要实现其他界面的时时更新/同步

问题:通常的做法是在设置里选择完图片后,保存沙盒,然后通知其他界面从沙盒中去,这样会造成反复的读取沙盒,极大的影响性能

解决方案:

1. 创建一个全局的单例对象,将图片或者个人信息保存到这个单例对象中,当用户改变个人信息(头像或者其他信息)时,发通知或者在viewwillappear中调用方法,更新数据,首先从单例对象中获取,如果获取不到在读取沙盒

2. 保存沙盒尽量放到子线程中进行



0 0
原创粉丝点击