[崩溃]----关于UIScrollView有些你很难知晓的崩溃情形-

为了实现以下的功能(按钮之间的切换效果):

简短的代码如下:

//
//  RootViewController.m
//  BUG
//
//  Copyright (c) 2014年 Y.X. All rights reserved.
//

#import "RootViewController.h"

@interface RootViewController ()

{
    UIView    *_showView;
}

@end

@implementation RootViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    _showView = [[UIView alloc] initWithFrame:self.view.bounds];
    [self.view addSubview:_showView];

    NSArray *title = @[@"YouXianMing",
                       @"XianHui",
                       @"XianMing",
                       @"XianNeng",
                       @"XianRen"];

    [title enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        // 初始化button
        UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(50, 50*(idx + 1), 130, 30)];
        button.layer.borderWidth = 1.f;
        [_showView addSubview:button];

        // 设置字体
        button.titleLabel.font = [UIFont fontWithName:@"HelveticaNeue-Thin"
                                                 size:15.f];

        // 设置标题以及标题颜色
        [button setTitle:obj
                forState:UIControlStateNormal];
        [button setTitleColor:[UIColor redColor]
                     forState:UIControlStateNormal];

        // 添加事件
        [button addTarget:self
                   action:@selector(buttonsEvent:)
         forControlEvents:UIControlEventTouchUpInside];
    }];
}

- (void)buttonsEvent:(UIButton *)button
{
    [_showView.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        UIButton *tmpButton = obj;

        if ([tmpButton isEqual:button])
        {
            [tmpButton setTitleColor:[UIColor redColor]
                            forState:UIControlStateNormal];
        }
        else
        {
            [tmpButton setTitleColor:[UIColor blackColor]
                            forState:UIControlStateNormal];
        }
    }];
}

@end

之后,将UIView替换成UIScrollView后:

然后就会崩溃-_-!!

崩溃信息:

*** Terminating app due to uncaught exception ‘NSInvalidArgumentException‘, reason: ‘-[UIImageView setTitleColor:forState:]: unrecognized selector sent to instance 0xa590390‘

崩溃原因是_showView.subviews里面有一个UIImageView

我们并没有添加这个东西UIImageView到subviews中呢,其实,这个东西是UIScrollView自己的一个东西......

写上以下保护性语句就没问题了.

话说,UIScrollView跟你偷偷加了点东西让你崩溃了都不知道咋回事-_-!!!

[崩溃]----关于UIScrollView有些你很难知晓的崩溃情形-,布布扣,bubuko.com

时间: 2024-09-29 02:47:42

[崩溃]----关于UIScrollView有些你很难知晓的崩溃情形-的相关文章

关于UIScrollView有些你很难知晓的崩溃情形

为了实现以下的功能(按钮之间的切换效果): 简短的代码如下: // // RootViewController.m // BUG // // Copyright (c) 2014年 Y.X. All rights reserved. // #import "RootViewController.h" @interface RootViewController () { UIView *_showView; } @end @implementation RootViewControlle

为什么现在我们很难打造一支跟中供铁军一样的销售队伍?

滴滴出行创始人程维.同程旅游 CEO 吴志祥.原美团 COO 干嘉伟.原大众点评 COO 吕广渝.原赶集网 COO 陈国环,中国互联网数不清的 CEO 和高管都出自阿里中供铁军. 马云曾公开评价:"阿里巴巴旗下最剽悍,最具战斗力的销售团队,非中供铁军莫属!" 到现在为止,阿里的整套销售管理体系已被众多互联网公司模仿. 阿里巴巴对销售人员有一个硬性规定: 每位销售人员每天必须要完成八个拜访.像北京这种交通严重拥堵的大都市,很多人认为这不可能! 但阿里人就凭着这股韧劲和执行力,迅速抢占用户

Java程序员须知:分布式微服务为什么很难?

现在,我们不断地赞美云原生cloud native架构(容器化和微服务),然而现实是大多数公司仍然运行单体系统.为什么?这不是因为我们非常不时尚,而是因为分布式是非常困难的.尽管如此,它仍然是创建超大规模的.真正弹性的和快速响应的系统的唯一途径,因此我们必须围绕它进行整合. 在这篇文章中,我们将介绍分布式系统中一些障碍以及人们应对方法. 忘记康威定律(Conway's Law),分布式系统遵循的是墨菲定律:"任何可能出错的地方都会出错. 在分布式系统的大规模上看,统计不是你的朋友(事后诸葛亮).

难道Linux入门很难吗?

首先要说明,Linux还是一个很好的系统--当然是针对有一定基础的人来说. 这两天开始教学生用Linux ,因为考虑到要当作服务器来用,因此很容易就选定了CentOS 6,而且是在虚拟机中做实验.后面的问题是,用什么系统来承载虚拟机? 毫无疑问,Windows是学生们最熟悉的系统,各类软件也很多,很好用.唯一的问题是:系统这种东西,毫无疑问是用的越多越容易学会.所以从这个角度说,Windows 不是最好的选择.那么Linux 发行版合适吗? 首先没有QQ ,交流不便.不过学习环境不能上外网,到不

为什么新来的技术很难接手维护一个系统

为什么开发功能变得越来越慢? 某天来一个技术,他跟老板说:这个系统太臃肿了.很乱,我很难开展工作下去,至少很难按照我的经验和设想来实施.如果想让我顺利干下去,办法就是对系统进行重构一次(重构代码,或者开发新的系统替代原来系统). 我们让项目变得可维护性有很多.对公司,对接手的技术,都是有利而无害的. 自己做的成果没法让下一任衔接.就像官员上任,任期满了后.这个烫手的山芋丢给下一任去解决.我这一任期内,维护稳定不出事情就可以. 片面追求gdp指标,就好像片面追求功能的完成,不管功能完成的质量.外行

非嵌入式数据库 软件很难普及 玩大

pg没有 嵌入版我不用 TMD 以后 写软件 就得玩 嵌入式数据库否则 根本 做不大的我是前车之鉴,人家 网页都几十万用户了 我还徘徊在5万以下原因就是 客户端软件的 安装巨麻烦 ,我用的是 sqlserver2005每个用户都安装 sql2005可见 有多失败光售后问题 就能让人 死好几回非嵌入式数据库 软件很难普及 玩大以后 再写软件 就一个exe,不需要安装 可以用weblone再网页中运行,也可以下载下来直接运行 不需要安装

为什么国人很难出高质量开源

FKP-REST是一套全栈javascript框架 为什么国人很难出高质量开源 作者:webkixi 乱侃 今天因为VueJS展开的讨论,话锋转转,就转到这个主题了.这个主题其实也一直是我想要了解的问题,毕竟是 这个FKPJS要走的路.怎么样才能做好开源. 这里先推荐一篇好文,<思考的八种境界>,文章不长,但却有些感悟,第一条就撞在胸口, <一.形成主见>,行文大概意思是:有自己的一套,即便是很浅薄. 是的,即便浅薄,那也是心血所成,正如我正在做的FKPJS,虽然浅薄,但却花费了我

草根自媒体很难再出“达人”嘛?冯东阳+4个月+草根=月收过万+粉丝总浏览突破“百万”…………

草根在十年前就被网络提起,最近两年很是流行.自己也做自媒体有些年月了,深深感触草根很难再出达人.自媒体达人三要素=原创+坚持+分享 达人都是逆袭成功的.你想成功,你想成为达人,可是你的行动呢?坚持呢?分享的精神呢?前几天北京游玩,也认识了一位数据SEO的牛人,他姓胡“自称胡歌”,哈~ 他是一个对数据来源很敏感的人,哪怕是跟他面对面的交流时.你可能会问,他丫的有病吧.No……No,恰恰相反,胡哥的智商挺高的,智商简直超群.在这里倒不是说胡哥有多么的牛叉,是说他那一种令人难以置信,甚至不可理喻的专注

网络传输的加密与解密(不是很难理解的一个版本)

--网络传输的加密与解密--    由于互联网早期并没有考虑到数据报文安全的问题,早期的理念都是基于进行通信的.现在随着网络兴起,互联网上慢慢有很多"犯罪团体",用较低的犯罪成本通常是基于一个网络通信协议的一个小的漏洞来完成窃取.篡改.重播其他人的数据报文. 而往往计算机网络安全维护者和那些恶意攻击者玩的就是一个类似猫鼠游戏,网络安全维护者处处考虑对计算机的安全负责,而恶意攻击者处处找安全的漏洞.而对于那些恶意攻击方式大体分两种. 一种叫被动攻击,大体上来说就是窃听,攻击者获得传输信息