2013-10-14 5 views
7

이 코드가 작동하지 않는 이유가 어딘지 모릅니다. 나는 사용자가 로그인하지 않았을 때 비활성화 할 로그인 버튼이UIButton을 프로그래밍 방식으로 사용하지 않음

내가있는 UIButton 지금처럼 내 .H 파일에 delared 있습니다. 나는 참조를 설정 한

IBOutlet UIButton *myBtn; 

인터페이스 빌더의 아웃렛을이 버튼에 연결합니다. 내하는 .m 파일에서

가, 나는 시도했다 :.

[myBtn setEnabled: NO]; 

myBtn.enabled = NO; 

을하지만이 중 어느 것도 내가에있어 조건문에서 버튼을 비활성화 (내가 원하는 사용자가 성공적으로 로그인하면 로그인 버튼을 사용 중지하십시오.)

동일한 화면에서 두 개의 다른 버튼을 사용하여이 작업을 수행 할 수 있습니다. 코드가 정확한지 알고 있습니다. 나는 어떤 오류도 던지지 않는다. 그래서 나는 그 물체가 존재한다고 생각한다. myBtn에 대한 참조도 Xcode에서 색상을 변경하기 때문에 유효한 참조로 보입니다.

나는 뭔가를 놓쳤을 것입니다. 여기서 내가 뭘 잘못하고 있니? (전 Objective-C에서 비교적 새로운 Windows 개발자입니다)

+0

을 찾고 있다면, 그것은 함께 IBOutlet있는 UIButton * myBtn해야한다. 포인터가 필요합니다. 하지만 질문의 목적으로 만 단축 할 수 있다고 가정합니다. 어디에서 선언하셨습니까? 재산으로? 그렇다면 합성해야합니다. – mashdup

+0

아, 별표를 잊어 버렸습니다. (다른 컴퓨터에서 타이핑하고 있습니다 ...) – Tim

+1

버튼을 비활성화하기 전에'NSAssert (myBtn, @ "Button is nil!");'를 줄에 추가하십시오.'myBtn' 예외가 나타나면 실제 UIButton 인스턴스에 연결하지 않은 것입니다. –

답변

7

저에게는 괜찮은 것 같습니다. 당신은 버튼을 합성하고 있습니까? [self.myBtn setEnabled: NO]; 코드로 [myBtn setEnabled: NO]; 코드를 대체하고

@synthesize myBtn; 

을 그리고 :

@property(nonatomic,retain)UIButton *myBtn; 

.m에서 :

.h에서 .. 이것을 시도 마십시오

self.myBtn.enabled = NO; 
1

을보십시오.

2

버튼을 IBOutlet으로 설정해야합니다.

@property (weak, nonatomic) IBOutlet UIButton *myBtn; 

그런 식으로 스토리 보드에서 해당 버튼을 연결할 수 있습니다. 어떤 문제가 될 수 있습니다.

그런 다음 이것을 사용 중지합니다.

[_myBtn setEnabled:NO]; 
1

당신이 빠른 코드를 찾는 경우 :

var button = UIButton() 
button.enabled = false //disable the button 
2

당신이 당신의 .H 파일에 Swift3 솔루션

var myBtn = UIButton() 
myBtn.isEnabled = true 
관련 문제