UINavigationController & ldquo; кнопка возврата & rdquo; пользовательский текст?

Вы можете определить функцию для назначения для вас:

def assign(name, value):
    import inspect
    frame = inspect.currentframe()
    try:
        locals_ = frame.f_back.f_locals
    finally:
        del frame 
    locals_[name] = value
    return value

if assign('test', 0):
    print("first", test)
elif assign('xyz', 123):
    print("second", xyz)
146
задан TheNeil 15 May 2019 в 20:18
поделиться

4 ответа

Из эта ссылка :

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

Как сказал Тайлер в комментариях:

не делайте этого в контроллере видимого представления , но в представлении контроллер, который вы увидите, нажав кнопку возврата

340
ответ дан 23 November 2019 в 22:32
поделиться

Расширяя предложение Обри, вы можете сделать это в контроллере дочернего представления:

создайте две переменные для хранения старых значений родительского navigationItem.title и родительский элемент navigationItem

UINavigationItem* oldItem;
NSString* oldTitle;

в viewDidLoad , добавьте следующее:

oldItem = self.navigationController.navigationBar.topItem;  
oldTitle = oldItem.title;  
[oldItem setTitle: @"Back"];  

в viewWillDisappear , добавьте следующее:

[oldItem setTitle: oldTitle];  
oldTitle = nil;  // do this if you have retained oldTitle
oldItem = nil;   // do this if you have retained oldItem

Это не идеально. Вы увидите, что заголовок родительского представления изменится по мере того, как новый контроллер будет анимирован. НО это позволяет достичь цели по индивидуальной маркировке кнопки возврата и сохранению ее формы, как стандартная кнопка возврата.

0
ответ дан 23 November 2019 в 22:32
поделиться

- Я нашел удобное решение этой проблемы, просто установив заголовок контроллера перед тем, как нажимать на стек другой контроллер, например:

self.navigationItem.title = @"Replacement Title";
[self.navigationController pushViewController:newCtrl animated:YES];

Затем, убедитесь, что вы установили оригинальное заголовок в viewWillAppear, например:

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

Это работает, потому что по умолчанию UINavigationController при построении кнопки "назад" во время нажатия использует заголовок с предыдущего контроллера.

11
ответ дан 23 November 2019 в 22:32
поделиться

Я использую это:

// In the current view controller, not the one that is one level up in the stack
- (void)viewDidLoad {
    [super viewDidLoad];
    self.navigationController.navigationBar.backItem.title = @"Custom text";
}
22
ответ дан 23 November 2019 в 22:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: