![](/img/trans.png)
[英]UISearchBar in UINavigationController with cancel button not selectable
[英]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];
怎么樣:
navController.navigationBar.topItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel
target:self
action:@selector(dismissModal)];
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.