在行的按钮附近添加UIView?

时间:2013-09-01 11:21:44

标签: ios objective-c uitableview uiview

我有分段和行的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。它会弹出其他地方或根本不显示。

请帮我解决这个问题!谢谢。

1 个答案:

答案 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!