0

UIScrollView内のUIImageViewにプログラムでUIButtonを配置するiPadアプリを作成しています。

誰かがこれらのボタンの1つを押したとき、私はUIPopoverを提示したいと思います。ボタンはプログラムで追加されているので、ポップオーバーもプログラムで表示する必要があります。

ポップオーバーを表示するための私のコードは次のとおりです。

- (void)buttonHandler:(UIButton *)sender
{
    PushButtonViewController *controller = [[PushButtonViewController alloc] initWithButtonID:@"hej"];
    _pushButtonPopover = [[UIPopoverController alloc] initWithContentViewController:controller];

    _pushButtonPopover.delegate = self;

    if(![_pushButtonPopover isPopoverVisible]) {
       [_pushButtonPopover presentPopoverFromRect:sender.bounds inView:sender permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
    } else {
        [_pushButtonPopover dismissPopoverAnimated:YES];
    }
}

これは、ポップオーバービューコントローラーの初期化子です。

- (id)initWithButtonID:(NSString *)buttonID
{
    self = [super init];
    self.buttonID = buttonID;
    return self;
}

問題は、そうすると、空のポップオーバーが表示されることです。

スクリーンショット1-機能しない

ただし、ストーリーボードのセグエに接続された、事前に挿入されたボタンを使用すると、すべてが正常に機能します。

スクリーンショット2-正常に動作

私が間違っているかもしれないことについて、あなたがいくつかの提案をしてくれることを本当に望んでいます。前もって感謝します!

4

1 に答える 1

3

私は自分で答えを見つけたようです。何らかの理由で、次のようにストーリーボードからViewControllerをインスタンス化する必要があります。

PushButtonViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"Push Button Popover"];

このようにして、ビューが正しく表示されます。

于 2012-05-09T16:47:29.513 に答える