OC

Knowledge OS
主帖 4 条回复

救助 iOS关于动态类型的问题

yuprxk yuprxk · 2014年10月14日 · 无人欣赏。
    typeof(cell.accessoryView) control = cell.accessoryView;
    [(UIControl *)control addTarget:self action:@selector(dayOrNightChanged) forControlEvents:UIControlEventValueChanged];
    if ([control respondsToSelector:@selector(onTintColor)]) {
        if ([@"UISwitch" isEqualToString:classString]) {
            ((UISwitch *)control).onTintColor =  [UIColor blueColor];
        }
    }
cell.accessoryView 实际上是一个UISwitch,我怎么才能不这么笨拙进行类型转换,求教。 

回复

4 条
#2
yuprxk
2014年10月15日

如果事先只能从别处取得 字符串 @"UISwitch",我应该怎么进行类型转换,如果control 是UIButton类型呢?我不可能

if (@"UISwitch" isEqaulString) {

} else if (@"UIButton" isEqaulString ) {

} else if (@"UILabel" isEqaulString {

}

#4
yuprxk
2014年10月15日
UITableViewCell *cell = nil;

cell.accessoryView 是根据configuration.plist配件文件来确定的
//configuration.plist部分内容
cell0
accesrroyView UIStepper

cell1
accesrroyView UISwitch

cell2
accesrroyView UIButton

cell3
accesrroyView UILabel

NSString *classString = plist[@"accessoryView"];
UIView *accessoryView = [[NSClassFromString(classString) alloc] init];
cell.accessoryView = accessoryView;
各种控件的属性有些差异,看来用if else if ,来区分是目前比较好的办法。
登录 或者 注册