2012-01-26 7 views
3

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

#import "happydaysViewController.h" 

@implementation happydaysViewController 

-(IBAction)button { 

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

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

«кнопку»

необъявленной

ли я приближающийся это неправильный путь?

ответ

4

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

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. Ошибка, которую вы получаете, указывает на то, что вы на самом деле не получили свойство, называемое кнопкой, что может быть связано с тем, что вы никогда не добавляли его в свой класс, а может быть, потому, что вы назвали ваш метод «IBAction», и это противоречит методу getter для свойства, называемого кнопкой, которое также будет называться «кнопка». В моем коде я передаю кнопку в качестве параметра методу щелчка (вам нужно будет повторно связать кнопку в IB, если вы измените ее имя), которая: a) предоставляет другой способ получить кнопку и b) изменения имя метода, чтобы оно не конфликтует, если вы хотите иметь свойство, называемое кнопкой на вашем контроллере представления.

+0

Несколько вещей, которые вы также должны рассмотреть, попробуйте использовать графические форматы, такие как tiff или png. И удалите также пробелы. Раньше у меня возникали проблемы с файлами jpg. –

+0

Не совсем верно. Читайте это: http://stackoverflow.com/questions/3929281/when-to-use-png-or-jpg-in-iphone-development - в основном используют PNG для небольших изображений или те, которые имеют прозрачность, и используют JPEG для больших непрозрачные изображения или фотографии. –

+0

отмечено. благодаря :) –

0

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

[[self button] setImage:[NSImage imageNamed:@"Costa Rican Frog.jpg"]]; 
+2

Это для Mac OS. Вопрос был для iOS.Это также предполагает, что он создал выход для кнопки, что не ясно. –

+0

Что значит йога для создания розетки? Я добавил только две вещи: 1) Кнопка 2) Надпись над кнопкой. В построителе интерфейса я перетаскиваю соединение с кнопки на ярлык. – tonyrocks

+0

Что значит, что вы подключили кнопку к ярлыку? У вас должен быть один метод IBAction buttonClicked: method и два IBOutlet @properties в вашем классе happydaysViewController, который называется кнопкой UIButton, и тот, который называется UILabel, называемый ярлыком, и вам нужно перетащить их на свою кнопку и обозначить соответственно в IB. Затем вам нужно перетащить с вашей кнопки на метод IBAction buttonClicked:. –

0

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

В этом примере мы будем создавать программный код 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]; 

} 

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

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