弹出框控件在选择不同的表视图行时更改其位置

Posted

技术标签:

【中文标题】弹出框控件在选择不同的表视图行时更改其位置【英文标题】:Popover control changes its location on select of different table view rows 【发布时间】:2012-03-06 06:12:03 【问题描述】:

我正在使用两个弹出框控制器分别选择国家和州。国家和州的详细信息放在表格视图中。当我点击国家行时,相应的州弹出框会显示在另一个带有给定框架的弹出框上。这很好用对于 4 行数据。但是当国家数据行超过 4 时,状态弹出框会显示在另一个角落,即改变它的位置。 这是在 didSelect 行方法中创建弹出框的代码

StateSelection_iPad *classCourse = [[StateSelection_iPad alloc] init];
popover = [[UIPopoverController alloc] initWithContentViewController:classCourse];
    popover.delegate = self;
    classCourse.popNewDelegate=self;
    [popover presentPopoverFromRect:CGRectMake(50,-40, 200, 300) inView:self.view permittedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];
[classCourse release];

在 .m 类中

self.contentSizeForViewInPopover = CGSizeMake(250, 220);

每次我点击具有“n”行数的表格行时,如何在给定帧上获取弹出框

【问题讨论】:

【参考方案1】:

使用此代码显示所选行的弹出框

UITableViewCell *clickedCell = (UITableViewCell *)[[sender superview] superview];

NSIndexPath *clickedButtonPath = [table2 indexPathForCell:clickedCell];

int rows=clickedButtonPath.row;

int section1=clickedButtonPath.section;

     OR

NSSet *touches = [event allTouches]; UITouch *touch = [触摸任何对象]; CGPoint currentTouchPosition = [touch locationInView:self.tableView];

[popover presentPopoverFromRect:CGRectMake(currentTouchPosition.x-10, clickedCell.frame.origin.y+100, 10, 10) inView:self.view allowedArrowDirections:UIPopoverArrowDirectionLeft animated:YES];

根据您的要求更改框架。

【讨论】:

以上是关于弹出框控件在选择不同的表视图行时更改其位置的主要内容,如果未能解决你的问题,请参考以下文章

选择弹出框行时,如何调用 - (void)setDetailItem:(id)newDetailItem?

在运行时创建的控件没有窗口。无法从没有窗口的视图中显示弹出框

带有弹出框的自定义选择,打开时更改颜色

根据弹出框相对于窗口边缘的 X 位置更改 Bootstrap 弹出框的位置?

从弹出框/弹出框中定义的数据填充自定义 tableView 单元格中的字段

当 UIViewController 显示弹出框时,更改 CALayer 颜色与 UIView tintColor 同步