订制IOS系统控件要注意的问题

来源:未知 责任编辑:智问网络 发表时间:2013-11-12 17:12 点击:

通常在定制系统控件时,一般要遍历控件内的subviews,如下在定制UIAlertView时

[html] 
-(void)willPresentAlertView:(UIAlertView *)alertView{ 
    for (UIView* view in [alertView subviews]) 
    {       
        //判断如果是UILabel 
        if ([[[view class] description] isEqualToString:@"UILabel"]) 
        {             
            //针对UILabel做定制操作                      
        }         
        //判断如果是UIButton 
        if ([[[view class] description] isEqualToString:@"UIAlertButton"] 
            || [[[view class] description] isEqualToString:@"UIThreePartButton"]) 
        { 
            //针对UIButton做定制操作             
        }         
    } 

使用 [[[view class] description] isEqualToString:@"UIAlertButton"] 方法判断当前View是不是一个按钮时,有个弊端,因为[[view class] description]在不同的设备上有不同的描述,所以在以上的方法中使用了UIAlertButton或者UIThreePartButton,当然甚至还有更多。
其实完全不需要这样判断,可以使用[view isKindOfClass:NSClassFromString(@"UIButton")]来判断,也不用区分不同的设备,修改后的方法如下:

[html]
-(void)willPresentAlertView:(UIAlertView *)alertView{ 
    for (UIView* view in [alertView subviews]) 
    {       
        //判断如果是UILabel 
        if ([view isKindOfClass:NSClassFromString(@"UILabel")]) 
        {             
            //针对UILabel做定制操作                      
        }         
        //判断如果是UIButton 
        if ([view isKindOfClass:NSClassFromString(@"UIButton")]) 
        { 
            //针对UIButton做定制操作             
        }         
    } 


 

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Lexical or Preprocessor Issue 'xxx.h
    • ios学习笔记(二)xcode 4.3.2下实现基本交互
    • ios版本的helloworld
    • iphone(object-c) 内存管理(3) 有效的内存管理 前半部分
    • ios学习笔记(一)xcode 4.3.2下创建第一个ios项目
    • UITableView一些方法
    • IOS类似iphone通讯录TableView的完整demo【附源码】
    • [iPhone中级]iPhone团购信息客户端的开发 (二)
    • iphone(object-c)内存管理(1)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1