Удалить кнопку отмены в UIImagePickerControler - iOS 5.0 - PullRequest
0 голосов
/ 25 декабря 2011

У меня есть приложение, в котором при запуске отображается UIImagePickerController. Контроллер отображает кнопку отмены, но отменить нечего. Есть ли способ убрать кнопку?

ПРИМЕЧАНИЕ. Это , а не дубликат Можно ли удалить кнопку отмены из UIImagePickerController в ОС 3.2? . Там ответ на iOS 3.2 у меня не работает в iOS 5.

Ответы [ 2 ]

2 голосов
/ 02 января 2012

Я пытаюсь поставить UIImagePickerController не модально, а оригинально (как мы это делаем с обычным пользовательским UIViewController). Итак, мне не нужна кнопка отмены в UINavigationBar.

Нет задокументированных способов удаления кнопки отмены. Но здесь Я нашел какую-то идею. Я только что добавил этот код в свой файл 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. Таким образом, вы можете использовать ответ на этот вопрос. Но это совсем другой подход.

P.S. Извините за мой язык.

1 голос
/ 21 ноября 2014

Для 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;
}
...