在这里,我试图在 ios7 中查看一个accessoryButton。 我的问题类似于这个,但是在我将ios 6应用程序升级到ios 7的不同版本中,
how can I retrieve detail disclosure buttons view
这在 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”返回零,我想知道为什么,因为我选择了故事板中的详细信息披露。
请问好吗?
编辑说明: 我也可以像这样输入代码:
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 {
...
}