救助 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条回复
楼长
·
adad184
回复于 2014年10月14日
UISwitch *sw = (UISwitch*)cell.accessoryView;
2楼
·
yuprxk
回复于 2014年10月15日
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 ,来区分是目前比较好的办法。