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

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

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

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

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

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

CGRect newRect = [self.view convertRect:sectionHeaderView.selectBtn.frame fromView:self.sectionheaderView];

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


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

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

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

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

        return NO;

    }

    return YES;

}

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

解决:使用懒加载的方式


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

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


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

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

解决方案:

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

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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值