訂制IOS系統控件要註意的問題 – iPhone手機開發技術文章 iPhone軟體開發教學課程

通常在定制系統控件時,一般要遍歷控件內的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做定制操作             
        }         
    } 

 

發佈留言