Знаете ли вы, как скрыть кнопку "назад" в UINavigationController? Кроме того, как показать его, но я думаю, что очень похоже на его скрытие...
Как и приложение для почты на iPhone, когда вы нажимаете "Редактировать" при просмотре писем.
Знаете ли вы, как скрыть кнопку "назад" в UINavigationController? Кроме того, как показать его, но я думаю, что очень похоже на его скрытие...
Как и приложение для почты на iPhone, когда вы нажимаете "Редактировать" при просмотре писем.
Я только что узнал ответ, в контроллере используйте это:
[self.navigationItem setHidesBackButton:YES animated:YES];
И восстановить это:
[self.navigationItem setHidesBackButton:NO animated:YES];
-
[ОБНОВИТЬ]
Swift 3.0:
self.navigationItem.setHidesBackButton(true, animated:true)
Добавить этот код
[self.navigationItem setHidesBackButton:YES];
В дополнение к удалению кнопки "Назад" (с использованием уже рекомендованных методов) не забудьте, что пользователь все еще может "поп" на предыдущем экране с жестом салфетки слева направо в iOS 7 и более поздних версиях.
Чтобы отключить это (при необходимости), выполните следующее (например, в viewDidLoad):
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
Для скрытия и отображения кнопки "Назад" условно вы можете использовать следующий код:
-(void)viewDidAppear:(BOOL)animated
{
if ([tempAry count]==0)
{
[self.navigationItem setHidesBackButton:YES animated:YES];
}
else
{
[self.navigationItem setHidesBackButton:NO animated:YES];
}
[super viewDidAppear:animated];
}
Примечание: в некоторых случаях вы должны поместить его в метод viewDidAppear вместо viewWillAppear такие случаи, как: когда вы обновляете массив следующего класса в предыдущий класс и затем проверяете условие на следующий класс, как указано выше.
Просто для выяснения существующих ответов: свойство hidesBackButton
- правильный ответ, но во многих ответах неясно, к чему относится self
. В принципе, вы должны установить self.navigationItem.hidesBackButton = YES
в контроллере представления, который вот-вот будет нажат (или просто нажат) на UINavigationController
.
Другими словами, скажем, у меня есть UINavigationController
с именем myNavController
. Я хочу поместить на него новый вид, и когда я это сделаю, я больше не хочу, чтобы кнопка "Назад" отображалась. Я мог бы сделать что-то вроде:
UIViewController *newVC = [[UIViewController alloc] init];
//presumably would do some stuff here to set up the new view controller
newVC.navigationItem.hidesBackButton = YES;
[myNavController pushViewController:newVC animated:YES];
Когда код завершится, теперь будет отображаться представление, контролируемое newVC
, и не должна отображаться кнопка "Назад".
Swift iOS (я использовал следующее)
// hide back button
self.navigationItem.setHidesBackButton(true, animated: false)
// pgrm mark ----- ------
// hide the back button for this view controller
override func setEditing(editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)
self.navigationItem.setHidesBackButton(editing, animated: animated)
}// end setEditing
sethidesbackbutton почему-то не работал у меня
Я использовал этот путь →
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:[[UIView alloc]initWithFrame:CGRectMake(0, 0, 20, 30)]] ;
Всегда используйте Apple Documentation для простых проблем, которые они более просты и легки:)
Вот синтаксис для Swift 3.0:
self.navigationItem.setHidesBackButton(true, animated:true)
Ссылка
В моем случае у меня было несколько проблем с текущими ответами:
Итак, решение, которое, наконец, сработало для меня, это:
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder];
if (self) {
[self.navigationItem setHidesBackButton:YES animated:NO];
}
return self;
}
Решение, предложенное Зораном Симиком, почему-то не сработало для меня.
Этот код действительно работал:
MyController* controller = [[MyController alloc] init];
NSArray* array = [[[NSArray alloc] initWithObjects:controller, nil] autorelease];
[self.navigationController setViewControllers:array animated:NO];
[controller release];
Очевидно, вам придется манипулировать NSArray по своему вкусу, чтобы заставить его работать на вас. Надежда, которая помогает кому-то:)
В моем подклассе UIViewController у меня есть этот метод:
-(void)setEditing:(BOOL)editing animated:(BOOL)animated {
[super setEditing:editing animated: animated];
// hide back button in edit mode
[self.navigationItem setHidesBackButton:editing animated:YES];
}
Это скрывает кнопку "Назад" и заменяет ее кнопкой добавления в Swift:
override func setEditing(_ editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)
// This hides the back button while in editing mode, which makes room for an add item button
self.navigationItem.setHidesBackButton(editing, animated: animated)
if editing {
// This adds the add item button
let addButton = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(addTapped))
// Use the animated setter for the left button so that add button fades in while the back button fades out
self.navigationItem.setLeftBarButton(addButton, animated: animated)
self.enableBackGesture(enabled: false)
} else {
// This removes the add item button
self.navigationItem.setLeftBarButton(nil, animated: animated)
self.enableBackGesture(enabled: true)
}
}
func enableBackGesture(enabled: Bool) {
// In addition to removing the back button and adding the add item button while in edit mode, the user can still exit to the previous screen with a left-to-right swipe gesture in iOS 7 and later. This code disables this action while in edit mode.
if let navigationController = self.navigationController {
if let interactivePopGestureRecognizer = navigationController.interactivePopGestureRecognizer {
interactivePopGestureRecognizer.isEnabled = enabled
}
}
}
Swift 3.
Как правило, вы должны использовать API Apple per-ViewController, как описано много раз уже на этой странице, но иногда вам нужно немедленно контролировать кнопку "Назад".
Следующий код скрывает кнопку "Назад" и гарантирует, что обнаружение столкновения крана не происходит в области скрытых кнопок.
let emptyView = UIView(frame: .zero)
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: emptyView)
Это скрывает кнопку "Назад"
let backBtn = UIBarButtonItem(title: "", style: UIBarButtonItemStyle.plain, target: navigationController, action: nil)
navigationItem.leftBarButtonItem = backBtn