簡體   English   中英

取消按鈕未顯示在iPad模式下的UINavigationController中

[英]Cancel button not showing up in UINavigationController in modal for iPad

我正在嘗試為iPad的導航欄中的模式添加一個“取消”按鈕。

我正在使用以下代碼:

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:abPersonController];
    navController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
                                                                                          target:self
                                                                                          action:@selector(dismissModal)];
    [self presentViewController:navController animated:YES completion:nil];

但是由於某種原因,取消按鈕不會顯示。

使用Spark Inspector,我看到應該有取消按鈕但隱藏的后退指示器,並且在iPad Simulator中運行它時,看不到取消按鈕或后退指示器。

我嘗試將后指示器的hidden屬性設置為NO,但沒有任何顯示。

編輯:我可以使它起作用的唯一方法是,如果我在完成塊中添加按鈕:

[self presentViewController:navController animated:YES completion:^{abPersonController.navigationItem.leftBarButtonItem = doneButton;}];

但是該解決方案看起來很糟糕,因為在模態已經顯示在屏幕上之后,彈出完成按鈕。 是否有其他方法可以獲取它,所以它不必在完成塊中?

編輯:

        UIViewController *dummyView = [[UIViewController alloc] init];
        UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:dummyView];
        [navController pushViewController:abPersonController animated:NO];
        abPersonController.navigationItem.hidesBackButton = YES;
        abPersonController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
                                                                                              target:self
                                                                                              action:@selector(dismissModal)];
        navController.modalPresentationStyle = UIModalPresentationFormSheet;
        navController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
        [self presentViewController:navController animated:YES completion:nil];
        navController.view.superview.bounds = CGRectMake(0, 0, 320, 480);

應該是backBarButtomItem而不是leftBarButtomItem。

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:abPersonController];
navController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
                                                                                      target:self
                                                                                      action:@selector(dismissModal)];
[self presentViewController:navController animated:YES completion:nil];

怎么樣:

1。

navController.navigationBar.topItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
                                                                                                      target:self
                                                                                                      action:@selector(dismissModal)];

2。

abPersonController.navigationItem.lefBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
                                                                                                   target:self
                                                                                                   action:@selector(dismissModal)];

要么...

abPersonController對象的類-viewDidLoad (或init )中,您可以執行以下操作:

[self.navigationItem setLeftBarButton:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
                                                                                    target:self
                                                                                    action:@selector(dismissModal)]];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM