【发布时间】:2014-02-24 11:42:41
【问题描述】:
我正在尝试在 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 检查器,我看到取消按钮应该在的位置,但它被隐藏了,当你在 iPad 模拟器上运行它时,你看不到取消按钮或返回指示器。
我尝试将后退指示器的隐藏属性设置为 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);
【问题讨论】:
-
您需要将按钮应用到您放入导航控制器的视图控制器的
navigationItem,而不是导航控制器本身。
标签: ios ipad uinavigationcontroller uinavigationbar