获取UITableViewCellAccessoryDe​​tailButton的框架(这是零)

我试图从UITableViewCell的accessoryView展示一个popover。 该视图是默认的UITableViewCellAccessoryDetailButton 。 显然accessoryView是nil ,根据这个问题 ,这是一个预期的行为。 我的问题是,即使accessoryView属性为零,我如何获得附件的框架?

你不需要得到框架来呈现popover。 当你有一个辅助视图时,单元格的contentView的宽度变得更窄,所以它在辅助视图之前结束(如果给contentView一个背景颜色,你可以看到这个)。 你可以使用这个宽度来定位你的popupbutton的左边,

 -(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]; }