2010-06-22 6 views
1

나는 포인터로 정말 혼란 스럽다 ... 나는 그들이 가지고 있지 않은 다른 언어에 익숙하다고 생각한다. 다음 코드 스 니펫을 가지고 있습니다.목표 C 포인터

- (void)setAccountNumber:(NSString *)accountNumber Pin:(NSString *)pin { 
myAccessNumber.text = accountNumber; 
myPin.text = pin; 
} 

이 뷰는이 뷰를 제어하기 전에 다른 뷰에서 호출됩니다. 내가하는 일과 상관없이, 나는 계좌 번호의 가치를 액세스 번호 레이블과 핀 레이블에 넣을 수 없다. 디버깅 할 때 값이 올바르게 전달되고 있지만 여전히 표시되지 않는 것을 볼 수 있습니다. 또한 인터페이스 빌더는 모두 입력을 받도록 올바르게 설정되어 있습니다.

나는 또한이 시도, 그것은 또한 어떤 도움

- (void)setAccountNumber:(NSString *)accountNumber Pin:(NSString *)pin { 
myAccessNumber.text = [[NSString alloc] initWithString:accountNumber]; 
myPin.text = [[NSString alloc] initWithString:pin]; 
} 

감사를 작동하지 않습니다.

답변

3

myAccessNumbermyPin이 실제로보기에 연결되어 있습니까? 그들이 디버그 할 때 nil이 아닙니까?
그렇지 않으면 첫 번째 스 니펫은 ok이며 alloc/initWithString 항목이 필요하지 않습니다.

[myAccessNumber setStringValue:accountNumber]; 
[myPin setStringValue:pin]; 

사람들은 당신이 레이블 또는 텍스트 필드에 텍스트를 넣을 때 사용하는 방법은 다음과 같습니다

+0

나는이 문제를 알아 냈다. 나는 뷰가 아직로드되지 않았기 때문에 레이블을 "0x0"으로보고 텍스트 속성이 "범위를 벗어났다"고 말하면 임시로 NSString을 설정하고 종료했다. 뷰의 label 텍스트가로드됩니다. –

0

당신은이 코드를합니다. [myLabel stringValue];을 사용하여 값에 액세스 할 수 있습니다.

도트 표기법을 사용하여 객체의 속성에 액세스 할 수 있지만 대상 액션 표기법을 사용하는 것이 '코코아와 유사'하다고 말할 수 있습니다.

또한 .h 파일의 콘센트 IBOutlet NSTextField *myAccessNumber이 Interface Builder의 실제 인터페이스에 연결되어 있는지 확인해야합니다.

또한 메소드 선언에 일반적으로 Pin을 대문자로 사용하지 않습니다. 코코아 스타일은 메소드 선언에서 나머지 단어를 소문자로 유지하고 나머지는 CamelCase로 유지해야한다고 말합니다. (각 매개 변수에 대해).

예를 들어

:

- (void)myMethodWithString:(NSString*)newString andData:(NSData*)newData; 
+0

응? 레이블에는 stringValue가없고 텍스트 만 있습니다. – unbeli

+0

NSTextField는 레이블입니다. 그리고, 그것은 stringValue를가집니다. 문서는 다음 위치에 있습니다. http://developer.apple.com/mac/library/documentation/cocoa/reference/ApplicationKit/Classes/NSTextField_Class/Reference/Reference.html – huntaub

+0

setStringValue가 없으며 속성이 target-action의 반대가 아닙니다. . IBOutlet과 소문자 주석은 좋은 점이므로 downvote가 없습니다. – Eiko

0

변수의 경우 myAccessNumbermyPin 창에서 실제 라벨 (label) (UIOutlets는) 당신은하고 싶지 :

- (void)setAccountNumber:(NSString *)accountNumber Pin:(NSString *)pin 
{ 
    myAccessNumber.stringValue = accountNumber; 
    myPin.stringValue = pin; 
} 

stringValue 방법은 부모에 정의 NSTextField : NSControl