0

Ipad でアプリケーションを作成しています。Xib で pickerviewController を 1 つ取得しました。ユーザーが特定のボタンをクリックすると表示されます。今、そのピッカー ビューをポップオーバーに配置しようとしています。これが、この味を達成しようとしている方法です。

pickerView.hidden=FALSE;
i have created outlet of picker and i unhide it here 

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


    [popoverView addSubview:pickerView];
    popoverContent.view = popoverView;


    popoverContent.contentSizeForViewInPopover = CGSizeMake(320, 244);

    //create a popover controller
  UIPopoverController  *popoverController = [[UIPopoverController alloc] initWithContentViewController:popoverContent];
    CGRect popoverRect;
    popoverRect.origin.x =323;
    popoverRect.origin.y = 713;
    popoverRect.size.height = 215;
    popoverRect.size.width = 70;




    [popoverController presentPopoverFromRect:popoverRect
     inView:self.view
     permittedArrowDirections:UIPopoverArrowDirectionDown
     animated:YES];


    //release the popover content
    [popoverView release];
    [popoverContent release];

今問題は、ポップオーバーが表示されていることですが、完全に黒です。これに苦労しています。何が間違っているのか教えてください。または、コードを修正してください。

4

1 に答える 1

1

フレームがまだ適切に設定されていないため、ピッカー ビューがポップ オーバーのどこかに隠されているようです。したがって、開始点として、ピッカー ビューのフレームをポップ オーバーの境界と等しくなるように設定してみてください。

pickerView.frame = popoverView.bounds;

ただし、ピッカー ビューをサブビューとしてポップ オーバーに追加する前に、ピッカー ビューをスーパービューから適切に削除する必要があります。

現在、デフォルトでは、Xcode は IBOutlet を弱いプロパティとして生成します。これにより、ピッカー ビューがスーパービューから削除されると割り当てが解除されます。そのため、最初にピッカー ビューを強力なプロパティとして宣言する必要があります。

その後、現在のスーパービューから削除できます。

[pickerView removeFromSuperview];

ポップ オーバー ビュー コントローラーへの参照を保持する必要があります。たとえば、それがプロパティであることを宣言し、dismissPopoverAnimated を呼び出してポップ オーバーを適切に閉じる必要があります。

于 2013-06-13T14:52:47.147 に答える