1

UISplitViewController のマスター ビュー コントローラーの非表示/非表示機能を実装しようとしています。そのため、マスター ビュー コントローラーは縦向きと横向きのモードで存在する必要がありますが、特定のビュー (設定) に対してのみ存在する必要があります。それ以外の場所では、横向きにのみ表示する必要があります。

-(void)viewDidAppear:(BOOL)animated私のMasterControllerで私は書いています

self.popoverController.delegate = self;
appDelegate.splitViewController.delegate= nil;
appDelegate.splitViewController.delegate = self;
[appDelegate.splitViewController willRotateToInterfaceOrientation:self.interfaceOrientation duration:0];
[appDelegate.splitViewController didRotateFromInterfaceOrientation:self.interfaceOrientation];
appDelegate.splitViewController.view setNeedsLayout];

デリゲートメソッドも設定

- (BOOL)splitViewController:(UISplitViewController *)svc shouldHideViewController:(UIViewController *)vc inOrientation:(UIInterfaceOrientation)orientation
{    
    return NO;
}

私がここstackoverflowで見つけたこのアプローチは本当にうまく機能しますが、デバイスを回転させる限り. 次に、マスター ビュー コントローラーが消えます (黒いスペースが残ります)。回転中に表示され、回転が完了するとすぐに消えます。さらに、外側をクリックすると、マスタービューコントローラーが完全に消えます。

そこで、次のデリゲート メソッドを実装して、ポップオーバーが消えないようにしました。

- (BOOL)popoverControllerShouldDismissPopover:(UIPopoverController *)popoverController
{
    return NO;
}

それも機能しますが、詳細ビューの tableView が応答しません。

UIPopoverControllerDelegate メソッドからコードを削除する-(void)viewDidAppear:(BOOL)animatedと、すべて期待どおりに機能しますが、デバイスを回転させた直後です。

だから私の質問は、誰かが私がその問題を解決する方法を知っているかどうかです. このソリューションは、iOS 5.0 以降で動作するはずです。

ご回答ありがとうございます。

4

0 に答える 0