2014-07-16 1 views
0

내 프로젝트에서 UILabel과 NSArray를 사용하고 있습니다. NSString 형식의 배열에서 인수를 전달하고 있습니다. 중단 점을 사용하여 메서드 호출을 검사했습니다. 인수는 인수를 올바르게 전달하지만 사용하려고 시도하고 있습니다. 받은 인수 (from NSString)하지만 UILabel은 NULL 값을 표시합니다. 여기에 코드입니다 :UILabel이 할당 된 NSString의 값을 표시하지 않는 이유는 무엇입니까?

- (void)updateMenuLabel:(NSString *)passedObject { 
    NSString *str=[NSString stringWithFormat:@"%@", passedObject]; 
    lbl_selectitem.text=str; 

} 
+2

IB에서 제대로 연결되지 않았습니까? BTW 'stringWithFormat' 줄 중복됩니다. – trojanfoe

+0

IBOutlet과 연결하여 중복 라인을 제거하고 시도했지만 여전히 NULL이 표시됨 –

+0

lbl_selectitem이 nil이 아닌지 확인하십시오 (NSLog (@ "% @", lbl_selectitem)로 로그). – rdelmar

답변

0

이 때문에 여러 가지로 발생할 수 :이 속성이있는 경우, 그것은 XIB/펜촉 파일 또는 스토리 보드에서 제대로 연결되지 않았습니다. 프로그래밍 방식으로 생성 된 경우이 객체에 메모리를 할당했는지 확인 했습니까? 그 물체가 아무 것도 없다는 것이 확실 합니다만, 그 과정에서 어디를 주목해야합니다. viewDidLoad 또는 viewDidAppear (예 :)에 중단 점을 넣어 개체가 여전히 nil인지 확인한 다음 이동하십시오.

+1

이것은 답변으로 게시되었지만 질문에 대답하지 않습니다. 그것은 아마도 편집, 주석, 또 다른 질문이거나 삭제 된 것이어야합니다. – Neeku

0

passedObject 문자열 값을 확인해야합니다. nslog를 동일한 값으로 인쇄하십시오. rckoenes는 그것이 nil이라는 것을 제안했습니다.

0

인터페이스에서 NULL을 얻으면 문자열이 nil이라는 의미입니다. 변경 사항을 볼 수 없다면 문자열이 비어 있거나 (@ "") lbl_selectitem이 nil이라는 의미입니다. 어쩌면 xib의 객체에 연결되어 있지 않습니다.

첫 줄에 중단 점을 추가하십시오. 그런 다음 lldb 콘솔로 이동하여 다음을 입력하십시오.

po lbl_selectitem 
po passedObject 

속성에 저장된 값이 인쇄되고 실수를 찾을 수 있습니다.

0

두 가지,

  • 확인이 포맷 할 때 문자열/전무 null의 경우.
  • UILabel이 IBOutlet 인 경우 해당 속성이 속성 (@property)으로 선언되어 있는지 확인하십시오. IBOutlet이 아니고 UILabel을 만드는 경우 addSubview : 메소드를 사용하여 상위보기에 추가하십시오.
관련 문제