在这里,我试图在ios7中查看附件按钮。我的问题与此类似,但在我将 ios 6 应用程序升级到 ios 7 时使用不同的版本,
这在ios 6中工作正常,但在 ios 7中不起作用,我想知道为什么......这是我的代码:
- (UIView *)accessoryOfCell:(UITableViewCell *)tableViewCell
//Code inside method. I don't know how to quick indent so forget this {}
if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
for (UIView *view in [tableViewCell subviews]) {
//this loop 1 times, return view has class UITableViewCellScrollView
for (UIView *subview in [view subviews]) {
//this loop 3 times, return subview as:
//UITableViewCellContentView, _UITableViewCellSeparatorView , UITableViewCellDetailDisclosureView
NSLog(@"%@", subview.class);
if ([view isKindOfClass:[UIButton class]]) {
return view;
}
}
}
}
else {
// in ios 6, this works super fine!
for (UIView *view in [tableViewCell subviews]) {
if ([view isKindOfClass:[UIButton class]]) {
return view;
}
}
}
return nil;
因此,我上面的代码不会在 ios7 中返回任何作为 UIButton 的内容。
注意:“tableViewCell.accessoryView”返回 nil,我想知道为什么,因为我在情节提要中选择了详细信息披露。
请问有什么想法吗?
编辑注意:我也可以这样写代码:
if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) {
return ((UIView *)tableViewCell.subviews[0]).subviews[2];
} else { ... }
但我不想,因为这可能会导致将来更新应用程序对@$$ 造成痛苦
编辑注释#2:这个方法在内部被调用
- (void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
...
}