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

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

Вот как это должно выглядеть


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


Ответы (4)


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

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

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

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

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

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

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

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

что-то вроде: введите описание изображения здесь

person staticVoidMan    schedule 19.12.2013
comment
В юникоде нет стрелки, которая выглядела бы как задняя (по крайней мере, не такого размера). - person johnyu; 30.12.2013
comment
@johnyu: сделайте снимок экрана с тем, чего вы ожидаете, и добавьте его в свой вопрос - person staticVoidMan; 30.12.2013
comment
ОК, я добавил изображение - person johnyu; 30.12.2013
comment
@johnyu: хм .. я вижу несколько, но единственная проблема в том, что установка title на 〈 Back выявляет тонкое несоответствие между и Back. в любом случае ... я проверю что-нибудь хорошее - person staticVoidMan; 30.12.2013
comment
Возможно, мне просто нужно будет использовать изображение этой стрелки. Но спасибо за помощь. - person johnyu; 30.12.2013

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

// 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];
person Kaveh Vejdani    schedule 14.04.2014
comment
+1 за идею. Некоторые улучшения для позиционирования и ясности: (1) CGRectMake (-12, -1, 20, 30), (2) arrowLabel.font = [UIFont systemFontofSize: 40], (3) MakeScale (0.65,1.25). - person Jeff; 18.12.2018

Посмотрите перечисление 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;

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

person Alex    schedule 19.12.2013
comment
К сожалению, это совсем другое дело. - person johnyu; 30.12.2013