我有分段和行的tableview。当用户点击行/部分内的按钮时,它会在该特定按钮附近显示UIView
。
- (IBAction) openRoundedPopover:(id)sender {
btn = (UIButton*) sender;
//Identify if user clicked header section or cell row
if (btn.titleLabel.tag == 8)
isHeaderViewButtonClicked = YES; // headerview mean when user clicks on section
else
isHeaderViewButtonClicked = NO;
MainTableViewCell *clickedResourceCell = (MainTableViewCell*)btn.superview.superview;
CGPoint hitPoint = [sender convertPoint:CGPointZero toView:self.tableView];
self.roundedButtonMenu.frame = CGRectMake(43, isHeaderViewButtonClicked ? hitPoint.y+50:clickedResourceCell.frame.origin.y+53, self.roundedButtonMenu.frame.size.width, self.roundedButtonMenu.frame.size.height);
[self.view addSubview:self.roundedButtonMenu];
}
这些都很好。但是当用户继续添加行/部分并点击底部行/部分的按钮(即将桌面视图滚动到底部以查看新添加的行/部分)时,它将不会在该按钮附近显示UIView
。它会弹出其他地方或根本不显示。
请帮我解决这个问题!谢谢。
答案 0 :(得分:1)
MainTableViewCell *clickedResourceCell = (MainTableViewCell*)btn.superview.superview;
不要假设你无法控制的视图层次。 (这将在近期ios中突破110%)
所以我假设你没有得到单元格的框架!
MainTableViewCell *clickedResourceCell = (MainTableViewCell*)btn;
while(clickedResourceCell.superview && ![clickedResourceCell isKindOfClass:[MainTableViewCell class]]) {
clickedResourceCell = (MainTableViewCell*)clickedResourceCell.superview;
}
但你的问题是你把按钮添加到了不在滚动视图中的elf.view ..滚动时计算不能正常工作,可以吗?
将其添加到单元格中:
button.frame = CGRectMake(0,0,100,40); //dummy
[cell.contentView addSubview:btw];
//take care of cell reusing!