Ответ 1
Попробуйте установить этот параметр leftBarButtonItem. При представлении модально это не отображается.
self.navigationController?.navigationBar.topItem.leftBarButtonItem =
Я разрабатываю приложение для iOS и испытываю проблемы с использованием изображения в качестве элемента левой кнопки на панели навигации. Я попытался это следующим образом:
UIImage *backButtonImage = [UIImage imageNamed:@"backbuttonCB"];
CGRect buttonFrame = CGRectMake(0, 0, backButtonImage.size.width, backButtonImage.size.height);
UIButton *backButton = [[UIButton alloc] initWithFrame:buttonFrame];
[backButton setImage:backButtonImage forState:UIControlStateNormal];
UIBarButtonItem *backBarButtonItem= [[UIBarButtonItem alloc] initWithCustomView: backButton];
self.navigationItem.leftBarButtonItem = backBarButtonItem;
При запуске приложения никогда не отображается кнопка на панели.
Затем я попытался применить этот другой метод следующим образом.
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"backbuttonCB"] style:UIBarButtonItemStylePlain target:nil action:@selector(methodname)];
Этот метод действительно работал. Однако отображаемое изображение было окрашено в синий цвет и выглядело не таким, каким оно предназначалось. Изменение цвета оттенка этого изображения не помогло.
Любая идея, как я могу решить эту проблему?
EDIT: дополнительная информация, если это помогает. Это первый вид в стеке навигации. Навигационный стек отображается модально, т.е. Имеется предыдущий контроллер представления, и между предыдущим контроллером представления и навигационным контроллером существует модальный отступ. Это первый вид в стеке навигации.
ИЗМЕНИТЬ: ПРОБЛЕМА ИСПРАВЛЕНО. Я думаю, что это была ошибка в xcode, потому что когда я перезапустил xcode и протестировал его с использованием фактического устройства вместо эмулятора, он работал нормально. Тем не менее, по-прежнему не работает на эмулятор.
Попробуйте установить этот параметр leftBarButtonItem. При представлении модально это не отображается.
self.navigationController?.navigationBar.topItem.leftBarButtonItem =
Вызов myButton.sizeToFit()
перед назначением leftBarButtonItem
помог мне.
let cancelButton = UIButton()
cancelButton.backgroundColor = .red
cancelButton.setTitle("Common/Cancel".localized, for: .normal)
cancelButton.sizeToFit() //!!!
let cancelBarButton = UIBarButtonItem(customView: cancelButton)
navigationItem.leftBarButtonItem = cancelBarButton
Попробуйте использовать этот код,
self.navigationItem.hidesBackButton=YES;
UIImage *buttonImage = [UIImage imageNamed:@"Back"];
UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
[aButton setImage:buttonImage forState:UIControlStateNormal];
aButton.frame = CGRectMake(0.0,0.0,buttonImage.size.width,buttonImage.size.height);
[aButton addTarget:self action:@selector(backBtnTapped) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:aButton];
self.navigationItem.leftBarButtonItem = backButton;
У меня была та же проблема. Чтобы увидеть кнопку, мне пришлось изменить цвет оттенка, здесь код в Swift:
self.navigationItem.leftBarButtonItem = UIBarButtonItem.init(image:UIImage.init(named: "btn_back_default")!, style:UIBarButtonItemStyle.Plain, target: self, action: Selector("back"))
self.navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor()
Замените свой код, чтобы инициализировать кнопку как customType
следующим образом:
UIImage *backButtonImage = [UIImage imageNamed:@"backButtonCB"];
CGRect buttonFrame = CGRectMake(0, 0, backButtonImage.size.width, backButtonImage.size.height);
UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
[backButton setFrame:buttonFrame];
[backButton setImage:backButtonImage forState:UIControlStateNormal];
UIBarButtonItem *backBarButtonItem= [[UIBarButtonItem alloc] initWithCustomView: backButton];
self.navigationItem.leftBarButtonItem = backBarButtonItem;
Надеюсь, что это поможет....:)
Добавьте элемент навигации в раскадровку Views и создайте для него выход в ViewController. Затем используйте розетку вместо self.navigationController?.navigationItem
для ссылки на leftBarButtonItem.
Просто забудьте панель навигации при представлении контроллера представления и используйте обычную кнопку где-нибудь еще, внизу экрана. (Не кнопка, похожая на элемент навигации.) Это то, что Android делает лучше: кнопка "Назад" находится ближе к вашему пальцу.