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

关于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跟你偷偷加了点东西让你崩溃了都不知道咋回事-_-!!!

时间: 2024-08-02 20:54:44

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

用户体验:用户体验的评估和度量很难

"用户体验"这四个字已经泛滥到负面快要盖过正面.有一些看法(绝非心血来潮,只是一直没有想好怎么样才能说的更清楚),且先抛砖于此,看反应再行详述. 1."用户体验"是一个纯感性的东西.设计.评估.度量,都是无解的.只有针对可准确描述特征的人群,在可准确描述特征的环境下,才能谈及"体验".不知道什么人在什么情况下使用,就谈不上体验好坏. 2."用户体验设计"是大过整个企业的词,很多企业穷其一生其实就是在做用户体验设计,从出生的理由

稳定排名很难吗? 浅谈稳定排名的方法

做seo,虽然我们的最终目的不是排名,但是没有一个相对好的排名,就很难有好的流量,没有好的流量,自然就谈不上转化成业务量.但是怎么才能获得一个相对好的稳定的排名,这是各位seoer头疼的问题.难道稳定一个相对较好的排名真的很难吗? 其实排名就像逆水行舟,不进则退.所以维护保持网站一个相对好的排名是一个长期性的工作.在这里我总结一些个人心得,如果这些你都做到了,那么稳定排名就不难. 1.提升网站的主题 提升网站的主题性,是对关键词排名维护的综合说性,突出网站的主题,可以更加方便的使搜索引擎理解你的

大公司的团队很难创造成功产品

我们经常把互联网产品称为"轻产品"(快速产品响应),不过就今天很多互联网大公司的流程来说,我们很难将自己的产品称为"轻产品".现在我们越来越纠结复杂的流程影响了产品的快速反应,产品或者运营提出一个小小的需求,到最终这个需求变成产品或者产品改善,少则需要一周,多则个把月.有时候,我们觉得不是不能快速响应,只是困于流程过于复杂.我们不是没有创新,有时候创新的成本太大了. 在大互联网公司里面,我们难以避免的,就是必须严格遵循的流程规范,哪怕是创业团队亦是如此:需求收集-需

没被K过网站和降权过的站长很难真正的成长

大家看完这个标题可能会反问我一句,难道就说没被K过的网站和降权过的站长就能成为很好的成长吗?答案当然这是否定的,今天以一种站在SEO之外的视角来分析这个问题.那么从哪个角度来分析呢?如果从哲学的角度来分析,我记得马云说过,经验都是从失败中总结的.成功者总结的经验听听就可以了,别太信.比方如果让比尔盖茨去写成功记录,估计他也不会告诉大家他成功拿到第一个订单(第一桶金)是因为她母亲是IBM的董事会重要成员.股神巴菲特如果写成功记录,怕是也不会告诉大家他第一次进入华尔街是高盛接待的他,因为他父亲跟高盛

用虫虫软件做网站外链很难吗?

近来在售后群与很多新虫友在进行交流的时候发现,大多新拿到软件的虫友不知道怎么样做外链,在这里chongseo也认为,外链的确是所有站都必须要做的一个工作,尤其现在做外链也是比之前困难很多,原因是因为XX巷事件以后,很多论坛包括一些之前不怎么审核平台也开始对内容进行审核了.虽然现在要想取得不错外外链比之前有些困难,但我们更要迎难而上,那么该如如何进行外链呢,chongseo希望通过这个文章对新.老虫友都有帮助. 一.博客外链.博客外链一直是我们广大站长朋友在操作的一个好的链接平台,现在也有非常多的

AOL CEO详解雅虎交易:10亿用户很难忽视

7月26日消息,经过持续多月的竞标后,Verizon昨晚宣布它将以48.3亿美元的价格收购雅虎的核心业务.科技博客TechCrunch采访了AOL CEO蒂姆·阿姆斯特朗(Tim Armstrong),期间他详细解释了该项收购和未来的发展计划. 该收购的目标似乎是,整合雅虎和Verizon去年收购回来的AOL,组成单一的组织来与像谷歌.Facebook这样的数字媒体巨头展开竞争.该交易预计将于2017年第一季度完成. AOL CEO阿姆斯特朗在该交易公布后接受采访时称,由于雅虎是通过拍卖形式出售

企业网盘是高成本服务,低价网盘很难满足企业需求

搁在三年前,人们对企业网盘的态度差不多还是爱理不理,虽然企业网盘的概念已经喊了很多年,但始终处在"只听楼梯响,不见人下来"的阶段,大部门传统的个人网盘厂商听多了"狼来了"的喊声后,耳朵里茧子都老长老长,索性两耳不闻窗外事,一心只干传统活. 而传统的个人网盘一直处在"先圈人后圈钱"的怪圈思维模式中,但是高成本的运营.免费模式深入人心导致用户会员都不想买.人力监管不力导致盗版色情等泛滥成灾造成的社会不良影响以及在今年政府大力的监管模式等多重打压下致使

函数式编程很难,这正是你要学习它的原因

很奇怪不是,很少有人每天都使用函数式编程语言.如果你用Scala,Haskell,Erlang,F#或某个Lisp方言来编程,很可能没有公司会花钱聘你.这个行业里的绝大部分人都是使用像Python,Ruby,Java或C#等面向对象的编程语言--它们用起来很顺手.不错,你也许会偶然用到一两个"函数式语言特征",例如"block",但人们不会去做函数式编程. 然而,很多年来,我们一直被教导说函数式编程语言很好很棒.我仍然记得当我第一次阅读ESR的著名的关于学习Lisp

算法-一个很难的程序难题,关于m选n

问题描述 一个很难的程序难题,关于m选n 求一个m选n的算法,比如4选2,输出12 13 14 23 24 34 m选n的m和n要自由输入,怎么实现 解决方案 http://bbs.csdn.net/topics/390550326 解决方案二: 这个就是数学里面的组合问题,百度下实现算法呗. 解决方案三: m选n的算法 解决方案四: 经典算法题,你去搜索下能找到 解决方案五: 如何编写从M中选N的组合数程序 解决方案六: void print_subset(int cur,int m ,int