2017-12-03 26 views
0

私は、ナビゲーションバーにUIButtonを持つUIPopoverPresentationControllerを表示しようとしています。これはうまくいきましたが、iOS 11(iPad)以降、UIButtonはもう表示されません。興味深いことに、私のポップアップで、別のUIViewControllerをプッシュすることもできます。私が戻ってきたら、UIButtonが表示されます。 はここにポップアップを表示するコードです:UIPopoverPresentationControllerがiOS 11のrightBarButtonItemsを表示していません

- (IBAction)buttonPressed:(id)sender { 
    PopupViewController *popupController = [self.storyboard instantiateViewControllerWithIdentifier:@"PopupController"]; 

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:popupController]; 
    navController.modalPresentationStyle = UIModalPresentationPopover; 
    [self presentViewController:navController animated:YES completion:nil]; 

    UIPopoverPresentationController *popController = [popupController popoverPresentationController]; 

    CGRect rect = self.button.frame; 

    CGSize size = CGSizeMake(500, 400); 
    popController.sourceView = self.view; 
    popController.sourceRect = rect; 
    popupController.preferredContentSize = size; 
} 

、ここではUIButtonを表示するポップアップのコード、次のとおりです。

- (void)viewWillAppear:(BOOL)animated 
{ 
    UIButton *rightButton = [[UIButton alloc]init]; 
    [rightButton setTitle: @"Press me" forState:UIControlStateNormal]; 
    [rightButton setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
    rightButton.frame = CGRectMake(0, 0, 120, 24); 

    UIBarButtonItem *rightButtonItem = [[UIBarButtonItem alloc] initWithCustomView:rightButton]; 
    UIBarButtonItem *flexible = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil]; 
    self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:flexible, rightButtonItem, nil]; 
    self.navigationController.preferredContentSize = self.preferredContentSize; 
} 

誰もが何が起こっているのか知っていますか?ボタンがすぐに表示されるのはなぜですか?

答えて

0

コードをviewWillAppearからviewDidLoadに移動します。 viewWillAppearの中にあることは、別のコントローラを開いてからこのボタンに戻るときにボタンを見ることができる理由ですが、このビューに戻るたびにボタンを再作成する必要はありません。私はこれが最初に表示されない問題を解決する良いチャンスがあると思います。

+0

私はそれを試みたが、それは問題を解決しなかった – user3421926

関連する問題