2012-06-30 4 views
7

Я пытаюсь установить изображение для моего UIBarButtonItem, и я не могу этого сделать. Я пробовал два раза, и в первом случае я получаю изображение в нужном месте, но когда я нажимаю кнопку, ничего не происходит (он должен выскочить из нового окна, но ничего не работает). Существует кусок кода, который я использовал:Не удалось установить изображение для UIBarButtonItem

UIImage *faceImage = [UIImage imageNamed:@"plus_button.png"]; 
    UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom]; 
    face.bounds = CGRectMake(0, 0, faceImage.size.width, faceImage.size.height); 
    [face setImage:faceImage forState:UIControlStateNormal]; 
    UIBarButtonItem *faceBtn = [[[UIBarButtonItem alloc] initWithCustomView:face]initWithImage:faceImage style:UIBarButtonItemStylePlain target:self action:@selector(addProduct:)]; 

    self.navigationItem.leftBarButtonItem = faceBtn; 

Во втором случае, я установил изображение на кнопку, и появится новое окно, как это должно быть, но это не только мой пользовательский образ, который я хочу, но и шоу «границы», похоже, изображение было помещено в центр по умолчанию. Очевидно, я хочу только мое изображение, а не границы, только мое изображение. Там находится кусок кода, который я использовал во втором случае:

UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithImage:faceImage style:UIBarStyleDefault target:self action:@selector(addProduct:)]; 

    self.navigationItem.leftBarButtonItem = addButton; 

Пожалуйста, помогите мне решить эту проблему, любая помощь будет признателен, спасибо!

ответ

8

попробовать это ... изменить это метод, изображения в соответствии с

UIButton *button1=[UIButton buttonWithType:UIButtonTypeCustom]; 
[button1 setFrame:CGRectMake(10.0, 2.0, 45.0, 40.0)]; 
[button1 addTarget:self action:@selector(showLeft:) forControlEvents:UIControlEventTouchUpInside]; 
[button1 setImage:[UIImage imageNamed:@"left-arrow-button.png"] forState:UIControlStateNormal]; 
UIBarButtonItem *button = [[UIBarButtonItem alloc]initWithCustomView:button1]; 
self.navigationItem.leftBarButtonItem = button; 
+0

barButtonItemClass - необъявленный идентификатор :( –

+0

Ох! Я написал это по ошибке ... теперь я отредактировал, пожалуйста, проверьте it :-) – TheTiger

+0

Он работает для вас? – TheTiger

3

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

UIImage *faceImage = [UIImage imageNamed:@"Badge.png"]; 
    UIButton *face = [UIButton buttonWithType:UIButtonTypeCustom]; 
    face.bounds = CGRectMake(0, 0, faceImage.size.width, faceImage.size.height); 
    [face addTarget:self action:@selector(showAlerts) forControlEvents:UIControlEventTouchUpInside]; 
    [face setImage:faceImage forState:UIControlStateNormal]; 
    UIBarButtonItem *faceBtn = [[UIBarButtonItem alloc] initWithCustomView:face];  
    self.navigationItem.leftBarButtonItem = faceBtn; 

EDIT: Я добавил строку в свой ответ. Я только что напечатал сообщение «Привет» в журнале. это работает. Не могли бы вы попробовать?

Спасибо.

+0

Yuvaraj я высоко оценил то, что вы сделали, но я хочу, чтобы вы упомянуть я использовал «действие: @selector (addProduct :)» для называть мое второе окно. Очевидно, его не называют –

+0

@EvgeniyKleban. Попробуйте мой отредактированный ответ. Благодарю. –

+0

Yuvaraj.M спасибо всему, что работает! У меня только 2 правильных ответа от вас и парня ниже, я так счастлив, что решил эту проблему! Примите мои наилучшие пожелания! :) –

1
UIBarButtonItem *addButton = [[UIBarButtonItem alloc]initWithImage:faceImage style: UIButtonTypeCustom target:self action:@selector(addProduct:)]; 

    self.navigationItem.leftBarButtonItem = addButton; 

у творили кнопку по умолчанию, вам необходимо создать кнопку с UIButtonTypeCustom типа ...

+0

Спасибо, я понимаю это, но не могу справиться с вещами :) –

0

Swift версия принятого ответа для всех

var settingsButton = UIButton.buttonWithType(UIButtonType.Custom) as UIButton 
settingsButton.frame = CGRect(origin: CGPointZero, size: CGSize(width: 36, height: 36)) 
settingsButton.setImage(image, forState: UIControlState.Normal) 
settingsButton.addTarget(self, action: "buttonActionHere:", forControlEvents: UIControlEvents.TouchUpInside) 

let rightBarButtonItem = UIBarButtonItem(customView: settingsButton) 
navigationItem.setRightBarButtonItem(rightBarButtonItem, animated: true) 
3

Или ... просто напишите две строки кода iOS 8 Swift. (Может даже работать в прошивке 7)

let doneButtonAsLeftArrow = UIBarButtonItem(image: UIImage(named: "LeftArrow24x24.png"), style: .Plain, target: self, action: "doneButtonPushed") 
    navigationItem.leftBarButtonItem = doneButtonAsLeftArrow 
+0

Это должен быть принятый ответ. – reinaldoluckman

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