碎片2 iOS 代码总结

1.控制台输出的错误日志

http://www.jianshu.com/p/22c0997be8d7

2.bug:-[__NSCFNumber rangeOfCharacterFromSet:]: unrecognized selector sent to instance

这个是由于传的参数类型不对所导致,找了半天才找到原因。
比如
[cell setColumnTitle:[homeData objectAtIndex:row]];
这里其实是要传NSString类型,而其实返回的是NSArray类型,这个错误不会立即出发,而是过一段时间再出发,所以不好定位。

3.如果想让 整数除于整数 不损失精度的话,可以将某个整数强制转换为浮点型数据

NSIngter  diggcount = 11000;
 float wanCount =diggCount/10000; // 1
 float wanCount =(float)diggCount/10000; //1.1

4.bug:iOS 自定义TableviewCell 按钮复用问题] 按钮在cell上 避免复用

具体场景:点击cell上的button,button属性的改变会和cell的位置一一对应。


当点击全文时,button的hidden属性改变为Yes

常见问题:一般思路的话会出现问题:改变一个cell的button属性时,该属性不会改变。
原因:当点击cell上button时,要求改变button的hidden,然后重新加载(reload),但是重新加载时调用DataSource的cellForRowAtIndexPath方法,会重新创建一个对象,与原对象就不是一个对象了。


屏幕快照 2017-09-08 上午3.22.19.png

解决方法:


屏幕快照 2017-09-08 上午3.37.41.png

1.为按钮添加代理方法返回控制器
2.为cell创建一个Model ,model里面除了常规的显示数据外,还要预留一个Index 用来标记每个cell中的Btn.tag (这样的好处是,即使UI中cell复用了,但是每次点击的cell中的btn.tag是唯一的)
3.为cell预留一个SelectArray数组公共属性,通过改值将数据从tableView传递到cell中。
@property (nonatomic,strong) NSMutableArray *selectArr;

4.在控制器的按钮代理方法中,通过一个全局数组来记录当前点击的cell中的btn.tag (这里的特点或则说局限就是,数组中每次都只存一个tag,这也导致了点击cell出现勾选之后,必须再次点击当前cell,取消选择)

-(void)setModel:(TTCommentModel *)model{
    
    _model = model;
    
    qwButton.tag = _model.index;
}

按钮的tag和indexPath的row绑定。

#pragma mark - TransBtnsArrTTCommnetCellDelegate
-(void)TransBtnsArrTTCommnetCellWithBtn:(UIButton *)btn{

    selectBtn = btn;
    if (![self.selectedArray containsObject:@(btn.tag)]) {
        
        [self.selectedArray addObject:@(btn.tag)];
    }
   }

代理
当然selectedArray要通过懒加载创建好

5.cell里面对按钮状态的处理

-(void)setSelectArr:(NSMutableArray *)selectArr{
_selectArr = selectArr;

-(void)setSelectArr:(NSMutableArray *)selectArr{

    _selectArr = selectArr;
    
    if (_selectArr.count == 0) {
        
    }
    
    for (int i =0; i<_selectArr.count; i++) {
        
        if (qwButton.tag == [_selectArr[i] integerValue]) {
            
            qwButton.hidden = YES;
            
        }
    }

}

参考:https://m.2cto.com/kf/201704/622517.html

5.iOS - 固定宽度和字号,获取Label的frame;固定高度和字号,获取Label的frame

http://blog.csdn.net/qq_27364431/article/details/50561200

6.iOS 中 UIView 的 clipsTobounds 属性(UIView 和UIscrollView默认有区别)

clipsToBounds 决定了子视图的显示范围。
具体的说,就是当它取值为 YES 时,剪裁超出父视图范围的子视图部分;当它取值为 NO 时,不剪裁子视图。
默认值为 NO,但是在 UIScrollView 中,它的默认值是 YES,也就是说默认裁剪的。

7.当我使用cocoaPods引入pod YYModel时,调用该方法时崩溃;

但是直接引入是没问题的。待解决?

8. iOS支持ATS,必须使用HTTPS

测试的时候,将ATS的开关打开,Allow Arbitrary Loads设为NO,并且保证手机系统是iOS9以上。


Snip20170919_2.png

9.ios 里如何处理四舍五入的问题

double a = 10.0 / 4;
double b = 10 / 4;

注意:除法运算符并不是÷,而是一个正斜杠 /
1> 第1行中的10.0是浮点型,4是整型,因此会将4自动类型提升为浮点型后再进行运算,最后变量b的值是2.5
2> 第2行中的10和4都是整型,计算机中的运算有个原则:相同数据类型的值才能进行运算,而且运算结果依然是同一种数据类型。因此,整数除于整数,求出来的结果依然是整数,会损失小数部分。最后变量b的值是2。
3> 如果想让 整数除于整数 不损失精度的话,可以将某个整数强制转换为浮点型数据

10.bug:添加到父视图的子视图无法响应点击事件

向没有设定frame的父视图上添加有frame的子视图:会因为添加的那个时刻父视图没有创建出大小,而只能添加到宽高都为0的父视图上。【有时会子视图显现出来了,但是不可响应,因为父视图没大小】
<经常出现在封装的方法中。如果父视图的frame没用定大小而直接往上添加子视图,就会出现该问题。

11.自定义UIView等控件

当自定义时,注意加载UI和设置frame分开写;在init方法中创建,在layoutSubviews设置frame。

12.用导航控制器返回到指定控制器并有其自带方法

popToViewController用法 
方式一,不推荐
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:2] animated:YES];

方式二,推荐
或(推荐下面这种,不受后期控制器数量影响)
for (UIViewController *controller in self.navigationController.viewControllers) {
    if ([controller isKindOfClass:[你要跳转到的Controller class]]) {
        [self.navigationControllerpopToViewController:controller animated:YES];
    }
}


方式三,推荐  这种方式适合返回指定控制器并调用其方法(比如刷新)
// 需要返回调用的
 MyIMPPlanController *myIMPVC = nil;
    for (int i = 0; i < self.navigationController.viewControllers.count; i++) {
        
        CustomViewController *cv = self.navigationController.viewControllers[i];
        if ([cv isKindOfClass:[MyIMPPlanController class]]) {
            
            myIMPVC = (MyIMPPlanController *)cv;
            break;
        }
    }

    [self.navigationController popToViewController:myIMPVC animated:YES];
    [myIMPVC refreshData];

13.scrollView滚动到指定位置

self.categaryScroll.contentOffset = CGPointMake(offsetX, 0);
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,667评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,361评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,700评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,027评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,988评论 5 361
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,230评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,705评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,366评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,496评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,405评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,453评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,126评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,725评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,803评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,015评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,514评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,111评论 2 341

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,983评论 4 60
  • 再见孙悟空+前端面试问题集锦,一定就是你啦,我的骄傲 虽然你什么也没有留下,不过找着你我就开心啦,可以飞起来的那种...
    甘小花阅读 146评论 0 0
  • (一) 昨天潘达去陆家嘴买了iPhone7的新机,贴了膜,买了壳。小心翼翼的顺着机身的轮廓抚摸,但凡有一点点灰尘落...
    雪暮须臾阅读 567评论 1 1
  • 何必如此介怀,生活本就不平坦 我也希望能执掌风云,呼风唤雨 毕业真是个无情的字眼 别说永远,永远太久 我是个感性的...
    Zev_zhongwei阅读 149评论 1 1