1

サブビューとしてUIViewサブクラスを含むUIViewControllerがあります。サブビューでは、別のUIViewを動的に作成します。最も内側のビューが作成されると、UIViewControllerは委任を介して、矢印の頭が最も内側のビューを指す必要があるUIPopovercontrollerを表示する必要があることを通知されます。デリゲートメソッドの呼び出しでは、UIViewcontrollerがこのCGPointを使用してポップオーバーコントローラーを作成できるように、最も内側のビューの原点も渡します。問題は、UIPopovercontrollerが目的の場所に配置されていないことです。

MyController* myController = [ [ MyController alloc] init]; 
UINavigationController *aNavController = [[UINavigationController alloc]                    initWithRootViewController: myController];
self.popOver = [[[UIPopoverController alloc]
                initWithContentViewController:aNavController] autorelease];
[aNavController release];

CGRect rect;
//CGPoint p = CGPointMake(currentPage.frame.size.width/2, currentPage.frame.size.height/2); 
rect.origin = point;    //here point is the origin of the inner most view
rect.size = self.view.frame.size;
[self.popOver presentPopoverFromRect: rect inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];

このコードに欠けているのは、ポップオーバーが目的の場所ではなく位置から外れているように見えることです。

ありがとう

4

2 に答える 2

0

ポップオーバーrectを表示している が大きすぎる可能性があります。

最も内側のビューのサイズではなく、ビュー全体のサイズに設定しています。

于 2011-04-01T13:57:05.177 に答える
0

正しいビューを popOver に渡していないと思います。一度確認してください...

[self.popOver presentPopoverFromRect: rect inView:myInnerView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
于 2011-03-26T13:49:04.790 に答える