IOS: Как изменить фоновое изображение кнопки при нажатии? - PullRequest
3 голосов
/ 26 января 2012

У меня есть кнопка, которая при нажатии изменяет текст метки. Вот фрагмент моего кода из моего модуля контроллера (happydaysViewController.m):

#import "happydaysViewController.h"

@implementation happydaysViewController

-(IBAction)button {

    label.text = @"pop tart";
    button.image = @"Costa Rican Frog.jpg";
}

Итак, текст метки меняется с пустого на всплывающий, однако фоновое изображение кнопки не меняется с пустого на костариканский Frog.jpg. На самом деле я получаю следующую ошибку:

кнопка 'необъявленная

Я неправильно подхожу к этому?

Ответы [ 3 ]

4 голосов
/ 26 января 2012

Там очень много не так с этим кодом.Вместо того, чтобы перечислять все, я просто покажу вам, что должно быть!

happydaysViewController.h файл:

@interface happydaysViewController : UIViewController

@property (nonatomic, strong) IBOutlet UILabel *label;    //in IB drag this to your label
@property (nonatomic, strong) IBOutlet UIButton *button;    //in IB drag this to your button

-(IBAction)buttonClicked:(UIButton *)sender;    //in IB drag you button to this action

@end

happydaysViewController.m файл:

#import "happydaysViewController.h"

@implementation happydaysViewController

@synthesize label;
@synthesize button;

-(IBAction)buttonClicked:(UIButton *)sender
{
    label.text = @"pop tart";
    UIImage *image = [UIImage imageNamed:@"Costa Rican Frog.jpg"];
    [sender setImage:image forState:UIControlStateNormal];
}

@end

Итаквещи для исправления (в произвольном порядке):

  1. Вы не можете установить значение изображения в виде строки, вам нужно создать объект UIImage и загрузить в него файл изображения.К счастью, [UIImage imageNamed: ...] делает это очень просто.

  2. Кнопки могут иметь несколько изображений для разных состояний (выделены, выделены, отключены и т. Д.), Поэтому вам нужно указатькогда вы устанавливаете изображение.

  3. Ошибка, которую вы получаете, указывает на то, что на самом деле у вас нет свойства с именем button, что может быть потому, что вы никогда не добавляли его в свой класс илиможет быть потому, что вы назвали свой метод IBAction «button», и это противоречит методу getter для свойства button, которое также будет называться «button».В моем коде я передаю кнопку как параметр методу click (вам нужно будет повторно привязать кнопку в IB, если вы измените ее имя), который а) предоставляет другой способ получить кнопку и б) измененияимя метода, поэтому оно не будет конфликтовать, если вы хотите иметь свойство с именем button на вашем контроллере представления.

0 голосов
/ 05 февраля 2013

«Выделено» - это состояние элемента управления, которое возникает, когда сенсор входит и выходит из режима управления.

В этом примере мы собираемся создать UIButton программно, который будет показывать изменение кнопки при касании.

Создать кнопку

- (void)drawButton
{
myButton = [UIButton buttonWithType:UIButtonTypeCustom];
myButton.frame = CGRectMake(80, 50, 70, 70); //set frame for button

UIImage *buttonImage = [UIImage imageNamed:@"icon6.png"];
[myButton setBackgroundImage:buttonImage forState:UIControlStateNormal];

[myButton setTitle:@"Ok" forState:UIControlStateNormal];
[myButton addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:myButton];

}

- (void)viewDidLoad {
[super viewDidLoad];

[self drawButton];

}

Напишите действие кнопки, которое изменит изображение при касании

- (IBAction)buttonClicked:(id)sender 
{

UIImage *buttonImage = [UIImage imageNamed:@"home.png"];
[myButton setBackgroundImage:buttonImage forState:UIControlStateHighlighted];

}

При запуске приложения вы обнаружите, что оно меняет изображение при касании.

0 голосов
/ 26 января 2012

Вы должны написать это:

[[self button] setImage:[NSImage imageNamed:@"Costa Rican Frog.jpg"]];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...