Вы можете определить функцию для назначения для вас:
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)
Из эта ссылка :
self.navigationItem.backBarButtonItem =
[[UIBarButtonItem alloc] initWithTitle:@"Custom Title"
style:UIBarButtonItemStylePlain
target:nil
action:nil];
Как сказал Тайлер в комментариях:
не делайте этого в контроллере видимого представления , но в представлении контроллер, который вы увидите, нажав кнопку возврата
Расширяя предложение Обри, вы можете сделать это в контроллере дочернего представления:
создайте две переменные для хранения старых значений родительского 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
Это не идеально. Вы увидите, что заголовок родительского представления изменится по мере того, как новый контроллер будет анимирован. НО это позволяет достичь цели по индивидуальной маркировке кнопки возврата и сохранению ее формы, как стандартная кнопка возврата.
- Я нашел удобное решение этой проблемы, просто установив заголовок контроллера перед тем, как нажимать на стек другой контроллер, например:
self.navigationItem.title = @"Replacement Title";
[self.navigationController pushViewController:newCtrl animated:YES];
Затем, убедитесь, что вы установили оригинальное заголовок в viewWillAppear
, например:
-(void)viewWillAppear:(BOOL)animated
{
...
self.navigationItem.title = @"Original Title";
...
}
Это работает, потому что по умолчанию UINavigationController
при построении кнопки "назад" во время нажатия использует заголовок с предыдущего контроллера.
Я использую это:
// 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";
}