2014-12-03 59 views
0

免责声明:我意识到这可能不被Apple批准,并且我意识到遍历视图层次结构在编程上是不安全的。我试图找出自己的好奇心:)更改UIImagePickerController导航栏项目的案例

我想改变一个UIImagePickerController的导航栏项目的情况。

此作品标题文本:

viewController.navigationItem.title = [viewController.navigationItem.title uppercaseString]; 

但这并没有为取消按钮工作(显然它不是一个取消按钮正确的位置,但在视图中我找不到它层次)。

我该如何更改取消按钮?

[viewController.navigationItem.rightBarButtonItems enumerateObjectsUsingBlock:^(UIBarButtonItem* btn, NSUInteger idx, BOOL *stop) { 
    btn.title = [btn.title lowercaseString]; 
}]; 

回答

1

我不知道如何访问现有的取消按钮,但你可以取代它做这样的事情:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{  
    // add done button to right side of nav bar 
    UIBarButtonItem *cancelButton = [[UIBarButtonItem alloc] initWithTitle:@"cancel" 
                    style:UIBarButtonItemStylePlain 
                    target:self 
                    action:@selector(done:)]; 

    UINavigationBar *bar = navigationController.navigationBar; 
    UINavigationItem *topItem; 

    topItem = bar.topItem; 
    topItem.rightBarButtonItem = cancelButton; 
} 

编辑:

这将做什么你想,我想:

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 
{ 
    for (UIView *view in navigationController.navigationBar.subviews) 
    { 
     if ([view isKindOfClass:[UIButton class]]) 
     { 
      UIButton *btn = (UIButton *)view; 
      [btn setTitle:[btn.titleLabel.text lowercaseString] forState:UIControlStateNormal]; 
     } 
    } 
} 
+0

噢肯定,这其实是我int结束做可能。但我想从现有的按钮中获取原始字符串,以便将其全部预先本地化。 – brandonscript 2014-12-03 22:58:31

+1

啊。那么,也许你可以通过添加一个断点并使用'po [navigationController.view recursiveDescription]'来将通往该按钮的路径。 – 2014-12-03 23:02:39