2012-09-26 2 views
0

저는 ios 개발을 처음 접했고 'ios5 개발 시작'책의 4 장에 대한 자습서 연습을 통해 코드에서 일부 컴파일 오류가 발생했습니다.프로젝트를 빌드 할 때 선언 된 인터페이스 오류

여기 내 헤더 코드가 .H 파일

#import <UIKit/UIKit.h> 

    @interface BIDViewController : UIViewController 

    @property (strong, nonatomic) IBOutlet UITextField *namefIELD; 

    @property (strong, nonatomic) IBOutlet UITextField *numberField; 
    @property (strong, nonatomic) IBOutlet UILabel *sliderLabel; 
    @property (strong, nonatomic) IBOutlet UISegmentedControl *leftSwitch; 
    @property (strong, nonatomic) IBOutlet UISegmentedControl *rightSwitch; 
    @property (strong, nonatomic) IBOutlet UIButton *doSomethingButton; 

    -(IBAction)textFieldDoneEditing:(id)sender; 
    //to initialize the 'done' button when editing to confirm you have finished editing/ 

    -(IBAction) backgroundTap:(id)sender; 
    - (IBAction)sliderChanged:(id)sender; 
    - (IBAction)switchChanged:(id)sender; 
    - (IBAction)toggleControls:(id)sender; 
    - (IBAction)buttonPressed:(id)sender; 
    @end 

처럼 보이는 이곳 오류에 직면 메신저 " 'UISegmentedControl'에 대한 가시적 @ 인터페이스가 선택 선언하지 내하는 .m 코드의 무엇 '시튼 : 애니메이션을;'

@synthesize leftSwitch; 
    @synthesize rightSwitch; 


- (IBAction)switchChanged:(id)sender { 
UISwitch *whichSwitch = (UISwitch *)sender; 
BOOL setting = whichSwitch.isOn; 
[leftSwitch setOn: setting animated: YES]; //the error lies here/ 
[rightSwitch setO: setting animated: YES]; //the error lies here/ 
} 

- (IBAction)toggleControls:(id)sender { 
} 

- (IBAction)buttonPressed:(id)sender { 
} 
@end 

오류 문은 " 'UISegmentedControl'에 대한 눈에 보이는 @interface없는 선택기 선언 '시튼 : 애니메이션을;'

PLS가 매우 높이 평가 :

@PhilipMills를 투표 할 것, 도움이 ... 여기에 내가 세그먼트 컨트롤 객체 A의 레프트 사이드 또는 rightside 클릭으로 나는 즉시, 무슨 말인지입니다 브레이크 포인트가 자동으로 여기 내 위임 헤더 코드

#import <UIKit/UIKit.h> 

#import "BIDAppDelegate.h" 

int main(int argc, char *argv[]) 
{ 
     @autoreleasepool { 
    return UIApplicationMain(argc, argv, nil, NSStringFromClass([BIDAppDelegate   class])); //the breakpoint appears here. 
     } 
} 
+0

"세그먼트 컨트롤 개체의 왼쪽 또는 오른쪽 부분"이라고 말하면 실제로 사용되는 UI 개체 종류에 대해 여전히 혼동이있는 것처럼 들립니다. 네가 스위치로 바꿨다 고 생각 했어. –

+0

기본적으로 튜토리얼에 따라 라이브러리에서 세그먼트 컨트롤을 드래그했지만 콘센트 연결을 할 때 UISegmentedControl에서 UISwtich로 유형을 변경했습니다. – DanKiiing

+0

이 책은 모르지만 일관성이 있어야합니다. 세분화 된 컨트롤을 사용하는 경우 해당 방법을 선언하고 해당 메서드 만 호출해야합니다. 스위치 메소드/로직을 사용하려면 일치하는 UI 요소가 있어야합니다. 하나가 다른 사람으로부터 물려 받으면 다르다. 그러나 그렇지 않다. –

답변

1

UISwitchsetOn:animated: 방법을 가지고에 구성되어 있지만 UISegmentedControl하지 않습니다. 내가 의도 한 종류가 아닌 leftSwitchrightSwitch에 객체를 할당했다고 추측 할 것입니다 (또는 자습서가 의도 한 것).

+0

UISegmentedControl을 UISwitch로 변경했습니다. leftswtich를 클릭하고 'signal SIGABRT'오류가 발생할 때까지 모든 것이 올바르게 작동합니다. -_- – DanKiiing

+0

OK, 다음 오류로 넘어갔습니다. 이것은 프로그래밍입니다. :-) 오류가 발생했을 때 스택에 대한 세부 정보와 스위치가 활성화되었을 때 실행되는 코드를 제공해야합니다. –

+0

세그먼트 화 된 컨트롤 객체의 왼쪽 버튼을 클릭하면, 프로그램이 자동으로 헤더 델리게이트 코드에서 중단 점을 만듭니다. 이것은 내가 의미하는 것입니다.나는 원래의 질문에이 코드를 포함시켰다. – DanKiiing

관련 문제