iOS - UITableView,带有自定义框架和自定义单元格,可以显示UIPopOver

时间:2012-03-22 01:34:15

标签: ipad uitableview custom-cell uipopover

我的问题是两部分:

第1部分:

我有一个UITableView,有4行,当用户点击任何单元格时,它会显示内部UITableView,我扩展了主UITableView的大小,然后插入内部UITableView

internalTableView = [[InternalApartmentTableViewController alloc] initWithFrame:CGRectMake(0, 44, 550, (([[tableContent objectAtIndex:indexPath.row] count] - 1) * 44))];
[cell addSubview:internalTableView];

didSelectedRow是:

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if (selectedInternal != -1) {
    selectedInternal = -1;
} else {
    selectedInternal = indexPath.row;
    [internalTableView removeFromSuperview];
    [internalTableView release];
}
[tableViews reloadData];

}

我正在使用内部UITableView的少量行测试应用程序,高度= 700并且一切正常,在我使用实际数据,高度= 2500和数据之间显示,高度显示在= 1000左右,我不需要内部UITableView可滚动,只有主UITableView可滚动。

那么,我如何能够尽可能多地扩展UTableView的帧大小?

第2部分:

在内部UITableView中,我使用了一个自定义单元格,其中包含标签和图片以及2个按钮,其中一个按钮点击时,我想显示UIPopOver的位置,我无法确定视图中按钮的位置,实际上,我无法确定需要使用哪个视图来使用

在屏幕上显示UIPopOver
[popoverController presentPopoverFromRect: //(How can i get the rect for the button)
                   inView: //(in which view should the PopOver appear, master UITableView or Internal UITableView or Custom Cell)
                   permittedArrowDirections:UIPopoverArrowDirectionLeft
                   animated:YES];

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

//按下自定义单元格的btn时

if(![tempPopover isPopoverVisible])
{

    UIButton* btn=(UIButton *)sender;
    NSIndexPath*indexpath=[NSIndexPath indexPathForRow:btn.tag inSection:0];
    cell=(customCell *)[tableView cellForRowAtIndexPath:indexpath];

        popoverController *objView = [[popoverController alloc] init];

        tempPopover = [[UIPopoverController alloc] initWithContentViewController:objView];
        [tempPopover setPopoverContentSize:CGSizeMake(160, 160)];
        [tempPopover presentPopoverFromRect:CGRectMake(655, cell.contentView.frame.origin.y-105, 150, 150) inView:cell.contentView permittedArrowDirections:UIPopoverArrowDirectionUp animated:YES];

}