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,我怎么才能不这么笨拙进行类型转换,求教。
如果事先只能从别处取得 字符串 @"UISwitch",我应该怎么进行类型转换,如果control 是UIButton类型呢?我不可能
if (@"UISwitch" isEqaulString) {
} else if (@"UIButton" isEqaulString ) {
} else if (@"UILabel" isEqaulString {
}
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 ,来区分是目前比较好的办法。