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