2012-01-26 4 views
3

나는 그것을 클릭하면,이 레이블의 텍스트를 변경하는 버튼이 있습니다.IOS : 클릭 할 때 버튼의 배경 이미지를 변경하는 방법은 무엇입니까?

#import "happydaysViewController.h" 

@implementation happydaysViewController 

-(IBAction)button { 

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

그래서에서 레이블 텍스트 변경 타트 팝 빈, 그러나 버튼의 배경 이미지 코스타에 빈에서 변경되지 않습니다 : 여기 내 컨트롤러 모듈 (happydaysViewController.m)에서 내 코드의 조각이다 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 메서드의 이름을 "button"으로 지정했기 때문일 수 있습니다. 이것은 "button"이라고도 불리는 button이라는 속성에 대한 getter 메서드와 충돌합니다. 내 코드에서 내가 클릭 메서드에 매개 변수로 버튼을 전달 해요) 버튼을 얻을 수있는 또 다른 방법을 제공하고, b)는 변화하는 (당신은 당신이 이름을 변경하는 경우 IB의 버튼을 다시 결합해야합니다) 메서드의 이름이므로 뷰 컨트롤러에 button이라는 속성이 있으면 충돌하지 않습니다.

+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

. 질문은 iOS에 대한 것이 었습니다.또한 버튼의 콘센트가 만들어 졌다고 가정합니다. 이는 명확하지 않습니다. –

+0

콘센트를 만든 것은 무엇을 의미합니까? 나는 두 가지만 추가했습니다 : 1) 버튼 2) 버튼 위에 레이블을 붙이십시오. 인터페이스 빌더에서 버튼에서 레이블로 연결을 드래그합니다. – tonyrocks

+0

단추를 레이블에 연결한다는 것은 무엇을 의미합니까? 하나의 IBAction buttonClicked : 메소드와 happydaysViewController 클래스에 두 개의 IBOutlet @properties가 있어야합니다. 하나는 버튼이라고하는 UIButton이고 다른 하나는 label이라는 UILabel이며 다른 하나는 IB에서 버튼과 레이블로 드래그해야합니다. 그런 다음 버튼에서 IBAction buttonClicked : 메소드로 드래그해야합니다. –

0

"강조 표시"는 터치가 컨트롤에 들어가거나 종료 할 때 발생하는 컨트롤 상태입니다. 이 예에서

, 우리는 터치 업에 변경 버튼을 보여줄 것이다 프로그래밍있는 UIButton을 만들 것입니다.

당신이 그것을 터치까지의 이미지를 변경 것을 발견 할 것이다 응용 프로그램을 실행 최대

- (IBAction)buttonClicked:(id)sender 
{ 

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

} 

터치의 이미지를 변경할 것, 버튼

- (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]; 

} 

에 Button 조치를 쓰기를 만듭니다. 맥 OS 용의

관련 문제