0

私のアプリでは、ボタンはビューコントローラの下部に配置されています。そのボタンをクリックしている間、配置したボタンのすぐ上にテーブルビューが表示されたポップオーバービューが必要です。私の問題は、ポップオーバービューの開始位置が私の上部にあることです。ビューコントローラ。そのボタンのすぐ上に小さなポップオーバービューが必要です。ランドスケープモードを使用します。。

  UIViewController *popoverContent=[[UIViewController alloc]init];
UIView* popoverView = [[UIView alloc]initWithFrame:CGRectMake( 265,   100,  400 , 800)];
popoverView.backgroundColor = [UIColor clearColor];
// popoverView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"mmf.png"]];


UITableView *table = [[UITableView alloc]initWithFrame:CGRectMake( 0, 0,400,800) style:UITableViewStylePlain];
table.backgroundColor=[UIColor colorWithRed:(107.0/255.0) green: (164.0/255) blue:(183.0/255) alpha:1];
[table setDataSource:self];
[table setDelegate:self];
[table setRowHeight:80];
[popoverView addSubview:table];

popoverContent.view = popoverView;
// popoverContent.contentSizeForViewInPopover =
//CGSizeMake(250, 665);


self.popoverController = [[UIPopoverController alloc]
                          initWithContentViewController:popoverContent];
[self.popoverController presentPopoverFromRect:popoverView.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
[self.popoverController  presentPopoverFromRect:CGRectMake( 265,680,400,800)
                                         inView:self.view permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

座標に多くの値を試しましたが、開始位置が希望の位置にありません。

4

4 に答える 4

2

編集

    UIViewController *popoverContent=[[UIViewController alloc]init];
    UIView* popoverView = [[UIView alloc]initWithFrame:CGRectMake( 0,   0,  400 , 400)];
    popoverView.backgroundColor = [UIColor clearColor];
    // popoverView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"mmf.png"]];


    UITableView *table = [[UITableView alloc]initWithFrame:CGRectMake( 0, 0,400,400) style:UITableViewStylePlain];
    table.backgroundColor=[UIColor colorWithRed:(107.0/255.0) green: (164.0/255) blue:(183.0/255) alpha:1];
    [table setRowHeight:80];
    [popoverView addSubview:table];

    popoverContent.view = popoverView;
    popoverContent.contentSizeForViewInPopover = CGSizeMake(popoverView.frame.size.width, popoverView.frame.size.width);

    UIPopoverController *popoverController = [[UIPopoverController alloc]
                                              initWithContentViewController:popoverContent];
    [popoverController  presentPopoverFromRect:btnLogin.frame
                                        inView:btnLogin.superview permittedArrowDirections:UIPopoverArrowDirectionDown animated:YES];

あなたはただ確認し、frame of your buttonから提示することを確認してくださいview that contains button

于 2013-03-14T10:21:25.083 に答える
1

これで試してみてください、それはあなたを助けます、

UIViewController* popoverContent = [[UIViewController alloc] init];
        UIView*   popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 400, 320, 260)];
        popoverView.backgroundColor = [UIColor whiteColor];

        UITableView *table = [[UITableView alloc]initWithFrame:CGRectMake( 0, 0,320,260) style:UITableViewStylePlain];
    table.backgroundColor=[UIColor colorWithRed:(107.0/255.0) green: (164.0/255) blue:(183.0/255) alpha:1];
    [table setDataSource:self];
    [table setDelegate:self];
    [table setRowHeight:80];
    [popoverView addSubview:table];
        popoverContent.view = popoverView;
        popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];
        popoverRect = CGRectMake(100, 200, 1,30);

      //    in the above line change the position of the popover controller 

        popoverController.popoverContentSize = CGSizeMake(320, 260);
        [popoverController 
         presentPopoverFromRect:popoverRect
         inView:self.view
         permittedArrowDirections:UIPopoverArrowDirectionUp
         animated:YES];
于 2013-03-14T10:47:14.383 に答える
0

popOverを突然提示するのは良い考えではありません。UIコントロールから表示されると、ユーザーにとっては簡単です。

ただし、UIViewとTableViewのViewDidLoadでcontentPopOverSizeを設定してみてください。

[self setContentSizeForViewInPopover:CGSizeMake(width, height)];

CGRectMakeで指定するフレームは、ボタンを基準にしている必要があります。

それが役に立てば幸い。

于 2013-03-14T10:13:15.780 に答える
0

presentPopoverFromRectは、ポップオーバーが指すrectです。

[self.popoverController presentPopoverFromRect:yourBtn.frame inView:self.view    permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

yourBtnのフレームはviewcontrollerのビューで計算されることに注意してください。ボタンが他のビューの内側にある場合、その座標はそのビューで計算され、位置は正しくありません。

于 2013-03-14T10:47:25.820 に答える