2012-07-15 5 views
0

나는 objective-c를 사용하여이 작업을 수행하고 있습니다.하지만이 언어의 초보자입니다.텍스트 필드에 입력 한 숫자는 레이블에 0으로 표시됩니다.

"firstviewclass"라는 이름의 클래스가 있는데,이 뷰에는 첫 번째 뷰가 제어됩니다.이 뷰에는 사용자가 숫자를 입력하는 텍스트 필드가 있습니다. 텍스트 필드는 "setNumber"라는 firstviewclass.h에 있습니다. 이 뷰에는 두 번째 뷰를 제어하는 ​​또 다른 클래스 인 "secondviewclass"가 있습니다.이 뷰에는 secondviewclass.h에있는 레이블이 있습니다.이 레이블은 사용자가 텍스트 필드에 입력 한 값을 포함하도록합니다. 첫 번째보기,하지만 iOS 시뮬레이터에서 텍스트 필드에 입력 한 모든 숫자를 테스트하면 레이블에 0으로 표시됩니다 ... 정말 어떻게 해야할지 모르겠군요!

내 코드 :

firstviewclass.h :

#import <UIKit/UIKit.h> 

@interface firstviewclass : UIViewController 

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

- (IBAction)gotonextview:(id)sender; 

@end 

secondviewclass.h :

#import <UIKit/UIKit.h> 
#import "firstviewclass.h" 

@interface secondviewclass : UIViewController 

@property (weak, nonatomic) IBOutlet UILabel *labelthatrecivesthetextfieldvalue; 

@end 

secondviewclass.m : secondviewclass의 viewDidLoad에의

#import "secondviewclass.h" 
#import "firstviewclass.h" 

@implementation secondviewclass 
@synthesize labelthatrecivesthetextfieldvalue; 


-(void)viewDidLoad{ 
    [super viewDidLoad]; 

    firstviewclass *object = [[firstviewclass alloc] init]; 

    NSString *string = [[NSString alloc] initWithFormat:@"%i", [object.setNumber.text intValue]]; 

    labelthatrecivesthetextfieldvalue.text = string; 

} 

@end 

답변

1

우선 속성 또는 인스턴스 변수 setSomething의 이름을 지정하지 않는 것이 좋습니다. 그것은 당신이 setter를 호출하려고하는 것처럼 보이기 때문에 코드를 읽는 모든 사람들에게 두통을 일으킬 것입니다. 또한 학급 이름을 대문자로 기입하십시오.

실제 문제는 viewDidLoad에서 firstviewclass의 인스턴스를 만들고 나서 setNumber에서 값을 가져 오는 것입니다. 그것은 사용자가 아무 것도 입력 할 수 없기 전입니다.

setNumber 콘센트가 firstviewclass 일 수 있습니다. NIB를로드하는 대신 클래스를 직접 인스턴스화 할 것이므로 어쨌든 에 아무 것도 표시되지 않습니다.


편집 (아, 스토리 보드, 오 드) : 스토리 보드를 들어

, 당신은 두 번째보기로 setNumber 텍스트 필드의 값을 전달해야합니다.

우선 firstviewclass *object = [[firstviewclass alloc] init]; 행을 삭제하십시오.

그런 다음, 첫 번째 뷰 컨트롤러의 prepareForSegue 방법으로, 당신은 당신의 두 번째 뷰 컨트롤러의 속성에 setNumber 텍스트 필드의 값을 전달할 수 있으며, (예를 들어, configureView에) 거기에서 그것을 사용할 수 있습니다.

working through Apple's Storyboard tutorial을 권장합니다. 단계별로 정확하게 수행해야합니다. 현재 문제가 발생하여 다음보기 컨트롤러로 데이터를 전달하는 단계는 here입니다.

+0

Xcode를 사용하기 시작했을 때, NIB가 무엇인지 모르겠다. 스토리 보드 벌써 거기에 있었다. ..이 지역의 지식의 나의 부족을 유감스럽게 생각한다. –

+0

위의 편집 내용을 참조하십시오. Apple의 Storyboard Tutorial을 살펴 본다면 모든 것이 더 분명해질 것입니다. – puzzle

1

, 당신은 cr firstviewclass의 새 인스턴스를 사용한 다음 레이블의 속성에 액세스합니다. 당신이 아무것도 아닌 것으로 설정 했으므로 항상 0을 반환합니다.

gotonextview 메소드의 구현을 게시 할 수 있습니까?

편집 :

나는 첫 번째 뷰 컨트롤러에서 레이블 속성을 설정 할 필요가 있다고 생각합니다. 그래서 gotonextview 메서드에 다음 줄을 추가하십시오.

secondviewclass.labelthatrecivesthetextfieldvalue.text = self.setNumber.text; 

나는 네 명명 체계에서 약간 길어졌지만 작동 할 수도 있음을 인정한다.

+0

저는 스토리 보드를 사용하고 있습니다. 구현에 아무 것도 없기 때문에, 사용자는보기에서 다른 모달로 사용자를 가져옵니다 ... 이해하기를 바랍니다. 설명하는 방법을 모르겠습니다. –

+0

확인 답변을 가능한 한 업데이트했습니다. – bkbeachlabs

+0

내가 그 일을 할 때 오류가 나타납니다 : "속성 'labelthatrecivesthetextfieldvalue' 'secondviewclass'유형의 객체에"내가 뭘 잘못 했습니까? –

1

레이블 설정은 어떻게 시작합니까? viewDidLoad? 그렇다면 은 object.setNumber.text을 설정하지 않았기 때문에 정확합니다. 또한 첫 번째 viewController에서 데이터를 가져 오지 않습니다. 두 번째 viewController가 숫자가 무엇인지 알게해야합니다. NSUserDefaults에서이 값을 설정 한 다음 두 번째 viewController에서 기본값에서 해당 값을로드하십시오.

+0

나는 objective-c와이 아이폰 SDK가 새롭다. 내가 무슨 말을하는 지 모르겠다. 미안하다 ... –

관련 문제