Видалення тексту заголовка iOS UIBarButtonItem iOS


198

Що я хотів зробити - це видалити текст із кнопки "Назад" UIBarButtonItem, залишивши на панелі навігації лише синій шеврон. Майте на увазі, що я розробляю для iOS 7. Я спробував кілька методів, включаючи, але не обмежуючись ними:

Це метод зображення, який мені не сподобався (зображення виглядало поза місцем):

UIBarButtonItem *barBtnItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"iOS7BackButton"] style:UIBarButtonItemStylePlain target:self action:@selector(goToPrevious:)];
self.navigationItem.leftBarButtonItem = barBtnItem;

Ще один метод, який я спробував, це такий, який просто не працював (нічого не відображалося):

UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]init];
barBtn.title=@"";
self.navigationItem.leftBarButtonItem=barBtn;

Що я хотів досягти - це щось на кшталт кнопок іззаду, знайдених у додатку iOS 7 Music, у якому розміщено лише один шеврон.

Дякую.


подивитися на цей відповідь stackoverflow.com/a/20300577/1589731
ayalcinkaya

Чому ви не сфотографуєте, що є вашою вимогою? І посилайтеся на нього в leftBarButtonItem.
Вішал Шарма

Причина, чому я не використовував метод зображення, - це 1. Дуже важко отримати ідеальне зображення кнопки "назад". Я звернувся до StackOverflow за допомогою щодо того, як це зробити на самому собі.
Пан Зіюе

Відповіді:


198
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(-60, -60)
                                                         forBarMetrics:UIBarMetricsDefault];

Потім ви можете зняти назву елемента назад.

Якщо ви використовуєте Інструментарій, ви можете встановити навігаційні атрибути інспектора назад Кнопка з пробілом.


95
Виникає проблема з великими заголовками: вони не в центрі, а натиснуті праворуч, як якщо б текст кнопки "Назад" все ще був там
sonxurxo

11
Це не працює, якщо користувач увімкнув "Доступність - форми кнопок"
Mikael Bartlett

22
Я думаю, що це краща відповідь:[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor clearColor]} forState:UIControlStateNormal];
Бенджамін

19
Будь-яке рішення з магічними числами в ньому - погана ідея. З поштовхом до автоматичного розкладу, класи розмірів, функції доступності тощо. Використання постійних значень на кшталт цього неминуче вас укусить.
Майкл Петерсон

3
Щоб покращити коментар Бенджаміна, вам слід встановити це UIControlStateHighlightedтакож
n_b

411

Щоб встановити назву кнопки "назад" для контролера перегляду, не змінюючи його назви:

Завдання-C:

self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:self.navigationItem.backBarButtonItem.style target:nil action:nil];

Швидкий:

navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)

Щоб було зрозуміло, це робиться на контролері перегляду, який ви побачили, якщо натиснути кнопку назад. тобто замість того, щоб побачити "<Налаштування", ви хочете просто побачити "<", тоді на своєму SettingsViewController ви помістите це у своє init. Тоді ви не отримаєте жодної проблеми заголовка, яка не відображається, коли ви дивитесь на сам контролер перегляду.


1
Я не знаю, чому інша відповідь позначена як правильна, її просто видалення заголовка, щоб доктор кнопки "назад" мав "заголовок", але це зовсім не правильний підхід! Це має бути правильною відповіддю.
Пач

8
Також для всіх, хто використовує Swift, це NaviItem.backBarButtonItem = UIBarButtonItem (назва: "", стиль: .Plain, target: nil, action: nil). Не важко перетворити з Obj-C на Swift, але я врятую вас від проблеми
Zoyt

15
@BenjaminPiette Ви називаєте це на UIViewController, що ви побачили, якби натиснути кнопку назад? Не UIViewController, який відображає кнопку назад.
DonnaLea

2
Яке елегантне рішення! Дякую. Просто не було правильним робити компенсацію.
hyd00

2
це рішення ідеально працює, якщо ви записуєте цей рядок коду на попередній контролер у навігаційному стеку.
Богдан Савич

128

Якщо ви використовуєте Attributes Inspectorдошки розкадрувань, ви можете перейти до ViewController's Navigation Item(натисніть Navigation Bar) і встановити для Back Buttonвластивості "" (один пробіл). Це дозволить встановити заголовок кнопки "Назад" на один пробіл, залишивши видимим шеврон. Не потрібно возитися з кодом.

Приклад зображення

Зауважте, що це встановить Back Buttonзаголовок кнопки "Назад", яка буде переходити на цей контролер перегляду від тієї, яка була натиснута на неї поверх, а не для того, Back Buttonщо буде відображатися всередині цього контролера!


10
Я б хотів, щоб я міг підтримати це ще більше: "Зауважте, що це встановить назву кнопки" Назад "для кнопки" Назад ", яка буде пересилатись на цей контролер перегляду, таку, яка була натиснута зверху, а не на задню кнопку, яка відображатиметься всередині цього Контролер! "
Джейсон Лейн

121

Це працює для мене, щоб відображати лише "назад" шеврон без будь-якого тексту:

self.navigationController.navigationBar.topItem.title = @"";

Встановіть цю властивість у viewDidLoadКонтролер перегляду, який представляє панель навігації, і це зробить трюк.

Примітка. Я протестував його лише в iOS 7, що входить в рамки питання.


33
Це має побічний ефект від видалення заголовка мітки посередині панелі навігації.
Pwner

7
Встановіть назву натискання VC на "viewWillAppear" з тією ж властивістю. Таким чином його не видаляють.
Guto Araujo

5
Я перемістив цей фрагмент коду до -viewDidLoadVC, що не хочу тексту Back. Однак я дізнався пізніше, що коли я вискакую 2-й ВК із navigationControllerтексту заголовка, з’являється незабаром, а не відразу. Я думаю, що відео це краще проілюструє, ось ось це: посилання
Пан Зіюе

1
Це не найкраща відповідь, зверніться до відповіді andyleehao: [[поява UIBarButtonItem] setBackButtonTitlePositionAdjustment: UIOffsetMake (0, -60) дляBarMetrics: UIBarMetricsDefault];
lmnbebe

1
Це правильна відповідь згідно з документацією Apple: "Коли приймач знаходиться у стеку елементів навігації і знаходиться другим зверху - іншими словами, його контролер перегляду управляє видами, до яких користувач повертається назад - значенням у цій властивості використовується для кнопки "Назад" на самій верхній панелі навігації. Якщо значення цього властивості дорівнює нулю, система використовує рядок "Назад" як текст кнопки "."
Рафаель Олівейра

27

Встановлюючи назву кнопки, використовуйте @ "" замість @ "".

--EDIT--

Чи щось змінюється при спробі інших рядків? Я успішно використовую такий код:

UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:backString style:UIBarButtonItemStyleDone target:nil action:nil];
[[self navigationItem] setBackBarButtonItem:backButton];

backString - це змінна, яка встановлена ​​на @ "" або @ "Назад", залежно від того, я перебуваю на iOS 7 або нижчій версії.

Варто зазначити, що цей код відсутній у контролері сторінки, для якої я хочу налаштувати кнопку "назад". Це насправді в контролері перед ним на навігаційному стеку.


Хм, iOS 7, схоже, цього не змінить. Він продовжує використовувати "Назад" як заголовок. Якби я поставив setLeftBarButtonItem:backButtonзамість цього нічого не було б.
Пан Зіюе

1
Якщо це так, і нічого не відбувається, якщо ви встановите заголовок на щось інше, я думаю, вам доведеться спробувати перенести свій код на батьківський контролер подання. Я використовую код, який я опублікував вище, у своєму методі підготовкиForSegue.
Камарос

27

введіть тут опис зображення

Іноді корисно бачити речі в контексті. Ось мінімальний проект, який приховує текст "назад", але все ще показує стрілку.

Розмальовка

введіть тут опис зображення

Існує шоу-шоу від кнопки «Показати другий контролер перегляду» до другого контролера перегляду.

Я також додав елемент навігації до другого контролера перегляду, щоб він мав назву. Це необов’язково. Це не впливає на кнопку назад.

Код

FirstViewController.swift

import UIKit
class FirstViewController: UIViewController {

    @IBAction func showSecondViewControllerButtonTapped(sender: UIButton) {

        // hide the back button text
        navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
    }
}

SecondViewController.swift

import UIKit
class SecondViewController: UIViewController {
    // Nothing at all needed here
}

Альтернативний метод (лише IB, без коду)

На дошці повідомлень виберіть елемент навігації для першого контролера перегляду (не другого). Просто введіть пробіл для тексту "Назад".

введіть тут опис зображення


Ключове поняття, що "для першого контролера перегляду (а не другого)", як імені VC, до якого ви хочете повернутися, тому відповідальність за надання цього заголовка.
buguibu

15
self.navigationController.navigationBar.topItem.title = @"";

1
Ви можете використовувати backItem замість topItem. TopItem приховає назву, тоді як BackItem приховає назву кнопки "Назад".
Ravi Ojha

2
Це єдине рішення, якщо childViewController знаходиться на глибині 2+ у дитячій стеці NavigationController
Натаніел Блюмер

2
Це також видалить заголовок попереднього контролера перегляду. У більшості випадків це буде смоктати
CalZone

11

На iOS7 Apple представила два нові властивості UINavigationBar, «backIndicatorTransitionMaskImage» та «backIndicatorImage».

Просто подзвонивши один раз:

[[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:@"your_image"]];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"your_image_mask"]];

Він візуалізує власне зображення замість гліфа шеврону за замовчуванням, успадкував колір відтінку keyWindow.

А для того, щоб зняти заголовок, я запропоную відповідь Камароса. Не забудьте зателефонувати цьому коду на контролер перегляду, який підштовхує ваш новий контролер перегляду. Видалення тексту заголовка iOS UIBarButtonItem iOS


Для налаштування кольору відтінку [[UINavigationBar поява] setTintColor: [UIColor whiteColor]];
Мазен Кассер

10

Я не мав великого успіху з наданими відповідями, але я знайшов дійсно просту роботу. У своїй дошці повідомлень ви можете натиснути на елемент навігації UIViewController і встановити текст кнопки "назад". Я встановив його в єдиний простір, і це дало мені поведінку, яку я шукав.введіть тут опис зображення


10

Це працювало для мене в iOS10. Викличте це через viewDidLoad контролера перегляду.

self.navigationController?.navigationBar.topItem?.title = ""

6

Просте рішення цієї проблеми, що працює на iOS7, а також на 6, полягає у встановленні спеціального перегляду заголовка у viewDidLoad:

- (void)viewDidLoad {

    [super viewDidLoad];

    UILabel *titleLabel = [[UILabel alloc] initWithFrame:CGRectZero];
    titleLabel.text = self.title;
    titleLabel.backgroundColor = [UIColor clearColor];

    [titleLabel sizeToFit];

    self.navigationItem.titleView = titleLabel;
}

Потім, у viewWillAppear: можна сміливо телефонувати

self.navigationController.navigationBar.topItem.title = @" ";

Оскільки перегляд заголовка - це власний перегляд, він не буде перезаписаний під час переміщення назад у навігаційному стеку.


Мені потрібна була лише остання частина коду, а не порожній UILabel. Я дзвонив [self.navigationItem.backBarButtonItem setTitle:@" "];у viewWillAppear, але він не працював на представленнях, представлених після відхилення модального перегляду.
Дізіет

6

Насправді ви можете зробити це лише одним фокусом:

Замініть UINavigationBarклас та додайте цей рядок коду:

- (void)layoutSubviews{
    self.backItem.title = @"";
    [super layoutSubviews];
}

Потім ініціалізуйте свій UINavigationControllerвласний клас UINavigationBar тощо.UINavigationController * navController = [[UINavigationController alloc] initWithNavigationBarClass:[CBCNavigationBar class] toolbarClass:nil];

Сподіваюсь, це допомагає


Це працювало для мене. Хоча це здається, що в анімації натискання на iOS 7 є незначне заїкання: заголовок, здається, дає місце для кнопки "назад", а потім центрується, оскільки такої немає.
zekel

Так, спробуйте скористатися користувацьким titleView замість прямої установки NaviItem.title. Я думаю, що це має вирішити вашу проблему.
rordulu

це рішення є дивовижним, оскільки воно є глобально для кожного навігаційного бару, який має підклас. Дякую
Yetispapa

5

Мені вдалося щось спільно обробити, використовуючи відповідь ДоннаЛеа. Ось як з'являється рішення в моєму підкласі UIViewController:

var backItemTitle:String?

override func viewDidLoad() {
    super.viewDidLoad()

    //store the original title
    backItemTitle = self.navigationController?.navigationBar.topItem?.title

    //remove the title for the back button
    navigationController?.navigationBar.topItem?.title = ""
}

override func willMoveToParentViewController(parent: UIViewController?) {
    super.willMoveToParentViewController(parent)
    if parent == nil {

        //restore the orignal title
        navigationController?.navigationBar.backItem?.title = backItemTitle
    }
}

Проблема з оригінальною відповіддю полягає в тому, що він видаляє заголовок з контролера, коли ви повертаєтесь до нього. Спроба скинути заголовок у viewWillDisappear занадто пізно в процесі переходу; Це змушує заголовок одразу замість того, щоб красиво анімувати. Однак willMoveToParentViewController трапляється швидше і передбачає правильну поведінку.

Caveat: Я протестував це лише за допомогою звичайного натискання / вискоку UINavigationController. У інших ситуаціях може виникнути додаткова несподівана поведінка.


4

У методі PrepaForSegue: у своєму першому ViewController ви встановите для заголовка цього виду значення "" ", тож при натисненні наступного виду відображатиметься попередня назва ViewController, яка буде @" ".

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    self.navigationItem.title = @" ";
}

Єдина проблема з цим полягає в тому, що при натисканні кнопки "назад" попередній перегляд не матиме заголовка, тому ви можете додати його ще раз у viewWillAppear:

- (void)viewWillAppear:(BOOL)animated{
    self.navigationItem.title = @"First View Title";
}

Мені не дуже подобається це рішення, але воно працює, і я не знайшов іншого способу зробити це.



3

Не відповіді мені допомогли. Але хитрість зробила - я просто очистив назву контролера перегляду, який натискав (куди збирається кнопка "назад" перед тим, як натиснути його.

Отже, коли попередній вигляд не має заголовка, на iOS 7 кнопка "назад" матиме лише стрілку, без тексту.

На viewWillAppearпідштовхувальному погляді я повернув оригінальну назву.


1
Гм, цей трюк працює. Однак схоже, що слова там часом мерехтять. Не дуже вдале рішення, але, тим не менш, хороший. +1
Пан Зіюе

3
    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                [UIColor clearColor],UITextAttributeTextColor,
                                nil];

    [[UIBarButtonItem appearance] setTitleTextAttributes:attributes
                                                forState:UIControlStateNormal];

У мене була така ж проблема, і я зробив це так.

--EDIT--

це рішення, коли ви дійсно хочете видалити текст заголовка з усіх UIBarbuttonItem. Якщо ви хочете видалити лише назву елемента задньої панелі, немає простого зручного рішення. У моєму випадку, оскільки у мене є лише кілька UIBarButtonItems, яким потрібно показати текст заголовка, я просто змінив ці конкретні кнопки 'titleTextAttributes. Якщо ви хочете бути більш конкретними, скористайтеся наведеним нижче кодом, який змінить лише кнопки панелі навігації:

NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
                                [UIColor clearColor],UITextAttributeTextColor,
                                nil];

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:attributes
                                                forState:UIControlStateNormal];

1
Це працює для мене, проте ви можете коротко побачити текст, коли відбиваєтесь назад.
Дізіет

3
@Diziet спробуйте додати те ж саме для держави , UIControlStateHighlightedа також
CoderPug

2
Це прекрасно працює, але це також "приховує" всі інші кнопки, не тільки кнопку "Назад" ... Будь-які ідеї для вирішення цього питання?
Уркман

3

Це за допомогою підкласу navigationControllerвидаляє "Назад".

Я використовую це, щоб видалити його назавжди через додаток.

//.h
@interface OPCustomNavigationController : UINavigationController 

@end

//.m
@implementation OPCustomNavigationController

- (void)awakeFromNib
{
    [self backButtonUIOverride:YES];
}

- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    [self backButtonUIOverride:NO];

    [super pushViewController:viewController animated:animated];
}

- (void)backButtonUIOverride:(BOOL)isRoot
{
    if (!self.viewControllers.count)
        return;

    UIViewController *viewController;

    if (isRoot)
    {
        viewController = self.viewControllers.firstObject;
    }
    else
    {
        int previousIndex = self.viewControllers.count - 1;

        viewController = [self.viewControllers objectAtIndex:previousIndex];
    }

    viewController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@""
                                                                                       style:UIBarButtonItemStylePlain
                                                                                      target:nil
                                                                                      action:nil];
}

@end

3
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefaultPrompt];
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(10.0, NSIntegerMin) forBarMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor],
                                                               NSFontAttributeName:[UIFont systemFontOfSize:1]}
                                                    forState:UIControlStateNormal];

1
Будь ласка, додайте пояснення до своєї відповіді.
Олексій

1 зробіть такий самий колір, що й панель навігації. 2 зробіть розмір тексту достатньо малим, щоб не видавити заголовок
Білл Сі

Я переглянув вашу відповідь, ви завжди повинні підтримувати свою відповідь.
Алекс

2

Назва кнопки "Назад" назад панелі навігації

UIBarButtonItem *barButton = [[UIBarButtonItem alloc] init];
barButton.title = @""; // blank or any other title
self.navigationController.navigationBar.topItem.backBarButtonItem = barButton;

2

Ось що я роблю, що простіше видалити заголовок кнопки "назад"

override func viewDidLoad() {
    super.viewDidLoad()
    navigationController?.navigationBar?.backItem?.title = ""
}

2

Swift 3.1 Це можна зробити, застосувавши делегатний метод UINavigationController. Заголовок буде приховано лише кнопкою "Назад", ми все одно отримаємо зображення стрілки назад і функціональність за замовчуванням.

func navigationController(_ navigationController: UINavigationController, 
  willShow viewController: UIViewController, animated: Bool) {
        let item = UIBarButtonItem(title: " ", style: .plain, target: nil, 
                    action: nil)
        viewController.navigationItem.backBarButtonItem = item
    }

1

Ви також можете скористатися цим:

UIBarButtonItem *temporaryBarButtonItem = [[UIBarButtonItem alloc] init];
temporaryBarButtonItem.title = @"";
self.navigationItem.backBarButtonItem = temporaryBarButtonItem;

[temporaryBarButtonItem release];

Це працює для мене


1
case : <Back as <

override func viewWillAppear(animated: Bool) {
navigationController!.navigationBar.topItem!.title = ""
    }

1

Ідеальне рішення в усьому світі

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

    UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.clearColor()], forState: UIControlState.Normal)
    UIBarButtonItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.clearColor()], forState: UIControlState.Highlighted)

    return true
}

найдорожче рішення з усіх ... його також використовують простір, як і раніше ... його просто стають прозорими ...
Laszlo

Він видаляє текст з усіх програм UIBarButtonItems програми
Mikel Sanchez

1

Я створюю спеціальний клас UINavigationControllerі застосовую його до всіх контролерів навігації в моєму додатку. Всередині цього спеціального UINavigationControllerкласу я встановлюю UINavigationBarделегата, selfколи перегляд завантажується.

- (void)viewDidLoad {
    self.navigationBar.delegate = self;
}

Потім я реалізую метод делегата:

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item {

    // This will clear the title of the previous view controller
    // so the back button is always just a back chevron without a title
    if (self.viewControllers.count > 1) {
        UIViewController *previousViewController = [self.viewControllers objectAtIndex:(self.viewControllers.count - 2)];
        previousViewController.title = @"";
    }
    return YES;
}

Таким чином я просто присвоюю свій власний клас всім своїм контролерам навігації, і він очищає заголовок з усіх кнопок назад. І лише для наочності я завжди встановлюю заголовок для всіх інших своїх контролерів перегляду всередині, viewWillAppearщоб заголовок завжди оновлювався безпосередньо перед поданням перегляду (на випадок, якщо його видаляють подібними трюками).


1

Просто введення єдиного місця для елемента навігації кнопки Назад працює !!


1
Це більше підходить як коментар, ніж відповідь.
Аль-Лелопат

1

Якщо ви, як я, ви використовуєте власний вигляд замість, UINavigationBarа ви застрягли за допомогою кнопки "назад", тоді вам доведеться виконати трохи роботи, яка відчуває трохи незграбність.

[self.navigationController.navigationBar setHidden:NO];
self.navigationController.navigationBar.topItem.title = @"";
[self.navigationController.navigationBar setHidden:YES];

Схоже, якщо він не буде представлений, то незалежно від того, що він спробує показати заголовок, це означає, що він відображається потім приховано перед тим, як його намалювати, і вирішить проблему.


1
extension UIViewController{
    func hideBackButton(){
        navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)
    }
}

1

Я створив дуже просту категорію нульових конфігурацій, щоб приховати всі заголовки кнопок назад через додаток, ви можете переглянути це тут . Це запитання вже прийняло відповідь, але для інших воно може бути корисним.

Редагувати:

.h файл

#import <UIKit/UIKit.h>

@interface UINavigationController (HideBackTitle)
extern void PJSwizzleMethod(Class cls, SEL originalSelector, SEL swizzledSelector);

@end

.m файл

#import "UINavigationController+HideBackTitle.h"
#import <objc/runtime.h>


@implementation UINavigationController (HideBackTitle)

+ (void)load {
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        PJSwizzleMethod([self class],
                    @selector(pushViewController:animated:),
                    @selector(pj_pushViewController:animated:));
    });
}

- (void)pj_pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
    UIViewController *disappearingViewController =  self.viewControllers.lastObject;
    if (disappearingViewController) {
        disappearingViewController.navigationItem.backBarButtonItem=[[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
    }
    if (!disappearingViewController) {
        return [self pj_pushViewController:viewController animated:animated];
    }
    return [self pj_pushViewController:viewController animated:animated];
}



@end

void PJSwizzleMethod(Class cls, SEL originalSelector, SEL swizzledSelector)
{
    Method originalMethod = class_getInstanceMethod(cls, originalSelector);
    Method swizzledMethod = class_getInstanceMethod(cls, swizzledSelector);

    BOOL didAddMethod =
    class_addMethod(cls,
                originalSelector,
                method_getImplementation(swizzledMethod),
                method_getTypeEncoding(swizzledMethod));

    if (didAddMethod) {
        class_replaceMethod(cls,
                        swizzledSelector,
                        method_getImplementation(originalMethod),
                        method_getTypeEncoding(originalMethod));
    } else {
        method_exchangeImplementations(originalMethod, swizzledMethod);
    }
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.