Я пытаюсь поставить 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. Извините за мой язык.