0

を含むポップオーバーがありますUITableView。ストーリーボードでは、ポップオーバーの高さをテーブル全体に合わせて設定しましたが、うまく表示されます。ただし、状況によっては、表示するセルを減らす必要があり、そのような場合はポップオーバーの高さを変更したいと考えています。私は次のようにします:

- (void)viewDidAppear:(BOOL)animated {
    [super viewDidAppear:animated]; 
    if (trimFourCells) {  // reduce the popover's height by that of four cells
        CGSize size = self.contentSizeForViewInPopover;
        size.height -= 4*60;
        self.contentSizeForViewInPopover = size;
    }
}

変更がアニメーション化されることを除いて、うまく機能します。最初にフルサイズが表示され、次に約 1 秒で縮小されます。

私の質問は、このアニメーションを無効にできるかどうかです。

を渡そうとしましNO[super viewDidAppear:animated]が、サイズ変更後にその行を移動しようとしました。アニメーションを妨げませんでした。次に、コードを に移動しようとしましたがviewWillAppear、高さも変わりませんでした。

4

2 に答える 2

2

@froing のおかげで、ここに解決策があります。ポップオーバーのコードでサイズを変更する代わりに、呼び出し元で行う必要があります。に次のようなコードを追加しましたprepareForSegue

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    UIPopoverController *pc = ((UIStoryboardPopoverSegue*)segue).popoverController;
    if (trim_nCells > 0) { // trim that many cells from the table
        CGSize size = pc.contentViewController.contentSizeForViewInPopover;
        size.height -= trim_nCells * cellHeight;
        [pc setPopoverContentSize:size animated:NO];
    }
    (... rest of the prep code ...)
}

表示の前に行われるため、アニメーションは含まれないため、animated:param の値は影響を与えないことに注意してください。

于 2012-07-18T19:53:07.173 に答える
1

使うだけ

- (void)setPopoverContentSize:(CGSize)size animated:(BOOL)animated

このような:

[popoverController setPopoverContentSize:size animated:NO];
于 2012-07-17T19:32:04.490 に答える