2016-06-14 10 views
0

次のコードを使用してポップオーバーを作成しています。風景のポップオーバーメニューが画面全体を占めています

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([[segue identifier] isEqualToString:@"popover"]) { 
     self.popoverTvc = [segue destinationViewController]; 
     self.popoverTvc.popoverPresentationController.delegate = self; 
    } 
} 

ユーザは、ナビゲーションバーのボタンをクリックすると、ポップオーバースタイルの上記セグエがトリガされ、得られたビュー・コントローラはテーブルビューを持っています。

問題は、ポートレートモードで

は、テーブルビューのサイズは、利用可能なコンテンツのサイズ通りである、ということです。しかし、ビューを風景から肖像画に変更すると、テーブルビューには空のセルが表示され、空のセルがUIをブロックしています。どうしてこんなことに?私は、風景モードでも画面全体をブロックしないようにtableviewをしたい。ビューで次のコードを使用して

Imがテーブルビュー

if (self.tableView && self.presentingViewController) { 
    self.preferredContentSize = [self.tableView sizeThatFits:self.presentingViewController.view.bounds.size]; 
} 

答えて

1

代わりのsize of table view is as per the size of the contents available.プログラムポップオーバーウィンドウの大きさを与えるのサイズを変更する負荷法を行いました。

は以下のように実行します。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    NSString *identifier = segue.identifier; 
    if ([identifier isEqualToString:@"popover"]) { 

     UIViewController *dvc = segue.destinationViewController; 
     dvc.preferredContentSize = CGSizeMake(180,128); 


     UIPopoverPresentationController *ppc = dvc.popoverPresentationController; 
     if (ppc) { 
      ppc.delegate = self; 
     } 
    } 

そして、ステップの上、以下の本を追加します。エラーはあなたが--- DVCを使用した後に得いただきましただけでなく風景モードで

- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller { 

    return UIModalPresentationNone; 
} 
+0

をサイズは180x128 – Roger

+0

まま。 preferredContentSize = [self.tableView sizeThatFits:self.presentingViewController.view.bounds.size]; ---代わりに dvc.preferredContentSize = CGSizeMake(180,128); –

+0

ビューをランドスケープに変更すると、ビュー全体が画面全体を覆っているので、ビューはまだ静止しています – Roger

関連する問題