0

在这里,我试图在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 {
...
}
4

0 回答 0