2013-08-12 2 views
-1

Я пытаюсь разработать приложение с панелью навигации нестандартного размера. (100px) На панели навигации я также хочу включить кнопку «Назад». Я добавил их обоих, используя вид ребенка, но кнопка назад не работает:Задняя кнопка на пользовательской панели навигации

UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
UIImage *backBtnImage = [UIImage imageNamed:@"menueButton.png"]; 
UIImage *backBtnImagePressed = [UIImage imageNamed:@"menueButton.png"]; 

backBtn.exclusiveTouch = YES; 
[backBtn addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside]; 
[backBtn setBackgroundImage:backBtnImage forState:UIControlStateNormal]; 
[backBtn setBackgroundImage:backBtnImagePressed forState:UIControlStateHighlighted]; 


backBtn.frame = CGRectMake(0, -40, 35, 32); 
UIView *backButtonView = [[UIView alloc] initWithFrame:CGRectMake(0, -40, 35 , 32)]; 
[backButtonView addSubview:backBtn]; 
UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithCustomView:backButtonView]; 
self.navigationItem.leftBarButtonItem = backButton; 

Мой размер навигационной панели составляет 100 пикселей в высоту, и, когда я использую положение кнопки (0,0,35,32) он будет работать правильно. Но в этом случае кнопка отображается намного ниже, чем предполагалось. Что я делаю не так?

ответ

0
self.btnBack = [UIButton buttonWithType:UIButtonTypeCustom]; 
[self.btnBack setImage:[UIImage imageNamed:@"back_active.png"] forState:UIControlStateNormal]; 
[self.btnBack addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside]; 
self.btnBack.frame = CGRectMake(5, 9, 50, 30); 
[self.navigationController.navigationBar addSubview:self.btnBack]; 

это link также.

Обновление: для задней кнопки

-(void)back 
{ 

[self.btnBack removeFromSuperview]; 
[self.navigationController popViewControllerAnimated animated:NO]; 
} 
+0

с помощью btnBack uiView отображаются две кнопки обратной связи на всем экране, но я хочу, чтобы на нескольких экранах была только одна кнопка назад. – 2AS

+0

нашел решение, заменив следующий код, но теперь у вас есть проблема, так как когда я посетил экран и вернулся на главный экран, панель навигации последний посещенный экран появляется на главном экране, но у меня нет кнопки или кнопки на главном экране. – 2AS

+0

'UIButton * backBtn = [UIButton buttonWithType: UIButtonTypeCustom]; [backBtn setImage: [UIImage imageNamed: @ "menueButton.png"] forState: UIControlStateNormal]; [backBtn addTarget: self action: nil forControlEvents: UIControlEventTouchUpInside]; backBtn.frame = CGRectMake (5, 15, 50, 32); [self.navigationController.navigationBar addSubview: backBtn]; self.navigationItem.hidesBackButton = YES; ' – 2AS

0

Попробуйте allocing backButtonView как этот

UIView *backButtonView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 35 , 32)]; 

изменения: orgin зрения на (0,0)

Редактировать

Попробуйте проверить

backBtn.frame = CGRectMake(0, 0, 35, 32); 
UIView *backButtonView = [[UIView alloc] initWithFrame:CGRectMake(0, -40, 35 , 32)]; 
+0

Lithu Спасибо за ваш ответ я уже пробовал, но до сих пор не работает :( – 2AS

+0

backBtn.frame = CGRectMake (0, 0, 35, 32); попробовать это и сделайте другое значение таким же, как в вопросе –

+0

Я пробовал оба backBtn.frame = CGRectMake (0, -40, 35, 32); UIView * backButtonView = [[UIView alloc] initWithFrame: CGRectMake (0, 0, 35 , 32)] и backBtn.frame = CGRectMake (0, 0, 35, 32); UIView * backButtonView = [[UIView alloc] initWithFrame: CGRectMake (0, -40, 35, 32)], одновременно, но все же нет работа – 2AS

Смежные вопросы