获取UITableViewCellAccessoryDe​​tailButton的框架(为零)

时间:2015-03-14 00:12:31

标签: ios objective-c uitableview null accessoryview

我试图从UITableViewCell的附件视图中呈现弹出窗口。该视图是默认的UITableViewCellAccessoryDetailButton。显然,accessoryView是nil,根据this question,这是一个预期的行为。我的问题是,即使accessoryView属性为nil,我如何获得附件的框架?

1 个答案:

答案 0 :(得分:2)

您无需让框架显示弹出窗口。当你有一个附件视图时,单元格contentView的宽度变得更窄,所以它在附件视图之前结束(如果你给contentView一个背景颜色你可以看到这个)。您可以使用该宽度将弹出窗口定位在按钮的左侧,

-(void)tableView:(UITableView *)tableView accessoryButtonTappedForRowWithIndexPath:(NSIndexPath *)indexPath {
    UIPopoverController  *aPopover = [[UIPopoverController alloc] initWithContentViewController:[UIViewController new]];
    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];
    CGRect popRect = CGRectMake(cell.frame.origin.x + cell.contentView.frame.size.width, cell.frame.size.height/2.0, 1, 1);
    [aPopover presentPopoverFromRect:popRect inView:cell permittedArrowDirections:UIPopoverArrowDirectionRight animated:YES];
}