我有一个应用程序,它在启动时显示UIImagePickerController。控制器显示取消按钮,但没有要取消的内容。有没有办法删除按钮?
注意:不是Can the Cancel button be removed from a UIImagePickerController in OS 3.2?的副本。 iOS 3.2的答案在iOS 5中对我不起作用。
答案 0 :(得分:2)
我尝试将UIImagePickerController设置为非模态,但是采用原始方式(就像我们使用普通的自定义UIViewController一样)。所以,我不需要UINavigationBar中的取消按钮。
没有记录的方法可以删除取消按钮。但here我发现了一些想法。 我刚在AppDelegate.m文件中添加了这段代码:
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
for (UINavigationItem *item in navigationController.navigationBar.subviews) {
if ([[item title] compare:@"Cancel"] == 0) {
UIButton *button = (UIButton *)item;
[button setHidden:YES];
}
}
}
所以现在隐藏了取消按钮。但是,如果您在相册中选择一些文件夹,则下一个视图将使用该按钮(并且不会隐藏)。 然后我尝试添加这样的代码:
- (void)navigationController:(UINavigationController *)navigationController
didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
for (UINavigationItem *item in navigationController.navigationBar.subviews) {
if ([[item title] compare:@"Cancel"] == 0) {
UIButton *button = (UIButton *)item;
[button setHidden:YES];
}
}
}
我在UIImagePickerController导航中的所有导航堆栈中都隐藏了取消按钮。
但是当新视图出现(动画过渡)时,取消按钮也会出现。
我不知道如何解决这个问题。
但是我认为这是一种棘手而低效的方法。因为它可以在将来的iOS更新中破坏您的应用程序。因此,您可以使用that问题的答案。但它完全是不同的方法。
P.S。抱歉我的语言。
答案 1 :(得分:1)
对于iOS 7和8,上述解决方案无效,
由于我们无法使用导航栏中的导航项,因此应该进行少量更改。以下将像魅力一样工作
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
viewController.navigationItem.rightBarButtonItems = nil;
}
- (void)navigationController:(UINavigationController *)navigationController
didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
viewController.navigationItem.rightBarButtonItems = nil;
}