Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Стрелка назад на iOS 7

Автор вопроса: johnyuОтветов: 4

Мне нужно добавить кнопку левой панели в моем приложении, которая выглядит как системная кнопка возврата, но не является системной кнопкой возврата, поскольку она появится на контроллере представления, который является единственным виртуальным каналом в моем стеке navController, и выполнит мой собственный код. Простое написание "Назад" для меня не очень хорошо, так как мне также нужно отображать стрелку "‹ ". Есть ли способ программно создать такую ​​стрелку, не создавая изображения с помощью этой стрелки?

  • возможный дубликат Создание стрелки влево кнопка (например, стиль возврата UINavigationBar) на UIToolbar Fruity Geek 19.12.2013
  • Обратите внимание, что предлагаемый дубликат - это гораздо более старый вопрос, датируемый 2008 годом, с только одним ответом, относящимся к iOS 7. Кроме того, OP здесь специально попросил решение, отличное от того, что описано в этом одном ответе. Давайте не будем слишком торопиться, чтобы закрыть это как дубликат. Caleb 19.12.2013

iosuinavigationbaruinavigationitem

Ответы

Ответ 1 · рейтинг 2 · onegray

Подумайте об использовании фиктивного UIViewController в качестве корневого контроллера представления для вашего стека UINavigationController:

 [[UINavigationController alloc] initWithRootViewController:[UIViewController new]];
 [navController pushViewController:viewController animated:NO];

Затем вы можете использовать мое расширение BackButtonHandler для обработки действия кнопки "Назад" (как описано в эта ветка):

 -(BOOL) navigationShouldPopOnBackButton {
      [self dismissModalViewControllerAnimated:YES];
      return NO;
 }

Ответ 2 · рейтинг 11 · staticVoidMan

Для этого можно использовать любой символ Юникода (где угодно в коде).

Здесь вы можете найти то, что хотите:

Xcode> Редактировать> Специальные символы ...

Найдите arrow или back или просмотрите категории.
Затем скопируйте и вставьте символ там, где это необходимо (в заголовке объекта XIB или в методах setTitle или setText, как любой другой символ)

что-то вроде:

Ответ 3 · рейтинг 4 · Kaveh Vejdani

Попробуй это:

// After you create and place your backButton:

UILabel* arrowLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, 20, 20)];
arrowLabel.text = @"<";
arrowLabel.textColor = [backButton titleColorForState:UIControlStateNormal];
arrowLabel.transform = CGAffineTransformMakeScale(1,2);
[backButton addSubview:arrowLabel];

Если addSubview вызывает проблемы, попробуйте

[backButton insertSubview:arrowLabel atIndex:0];

Ответ 4 · Alex

Посмотрите перечисление UIBarButtonSystemItem под contants в документации UIBarButtonItem:

https://developer.apple.com/library/IOs/documentation/UIKit/Reference/UIBarButtonItem_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40007519-CH3-SW2

Это все стили кнопок, предоставленные Apple:

typedef enum {
   UIBarButtonSystemItemDone,
   UIBarButtonSystemItemCancel,
   UIBarButtonSystemItemEdit,
   UIBarButtonSystemItemSave,
   UIBarButtonSystemItemAdd,
   UIBarButtonSystemItemFlexibleSpace,
   UIBarButtonSystemItemFixedSpace,
   UIBarButtonSystemItemCompose,
   UIBarButtonSystemItemReply,
   UIBarButtonSystemItemAction,
   UIBarButtonSystemItemOrganize,
   UIBarButtonSystemItemBookmarks,
   UIBarButtonSystemItemSearch,
   UIBarButtonSystemItemRefresh,
   UIBarButtonSystemItemStop,
   UIBarButtonSystemItemCamera,
   UIBarButtonSystemItemTrash,
   UIBarButtonSystemItemPlay,
   UIBarButtonSystemItemPause,
   UIBarButtonSystemItemRewind,
   UIBarButtonSystemItemFastForward,
   UIBarButtonSystemItemUndo,        // iOS 3.0 and later
   UIBarButtonSystemItemRedo,        // iOS 3.0 and later
   UIBarButtonSystemItemPageCurl,    // iOS 4.0 and later
} UIBarButtonSystemItem;

Возможно, вам будет достаточно перемотки или отмены.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы