2009-09-02 5 views
4

텍스트 필드의 사용자 이름 필드를 업데이트하려고합니다. 현재 "Username"이 쓰여진 place holder가 있습니다. 설정 파일에서 사용자 이름을로드하고 있지만 명확히하기 위해 사용자 이름을 하드 코딩합니다.UITextField 텍스트 필드가 설정되지 않았습니다.

- (void)viewDidLoad { 
    settings=[Settings new]; 
    [settings loadData]; 

    //username.text=settings.username; 
    [email protected]"Test"; 
} 

어떤 이유로이 기능이 작동하지 않습니다. 그러나 단추를 클릭하면 텍스트 필드가 업데이트됩니다.

버튼이 텍스트를 업데이트하지만 viewDidLoad에서 업데이트 할 수 없습니다. 이 문제가 스레딩입니까? 너무 단순한 것이 너무 오래 걸리는 것을 나는 믿을 수 없다.

답변

9

컨트롤이이 시점에서 생성되지 않았을 수 있습니다.

ViewController에서 - (void)viewDidAppear:(BOOL)animated의 값을 설정해보십시오.

- (void)viewWillAppear:(BOOL)animated도 시도해 볼 수 있습니다. 이 작동

+2

나는 꽤 viewDidLoad 후에 컨트롤이 만들어 졌을 것이라고 확신한다. username.placeholder = @ "Test"를 사용하여 자리 표시자를 변경할 수 있습니다. username.text = @ "Test"가 작동하지 않습니다. –

+0

좋아요, 저는 Stanford 비디오 중 하나를 보는 막연한 기억이 있습니다. 그리고로드 순서, 초기화 및 프레임 워크가 필요할 때까지로드되지 않는 게으른 것에 대해 언급하는 내용이 있습니다. – Xetius

+0

하지만 내 기억이 오르네 최대 수 있습니다! – Xetius

3

난 이유를 모르겠어하지만 처음

는 => - (void)viewDidAppear:(BOOL)animated

을 사용하여 표시된 후에 당신은 단지 텍스트 필드의 텍스트를 변경할 수있어

0

당신에게 ' 텍스트 필드를 속성 내의 IBOutlet으로 선언했습니다. 내가 한 실수는 을 잊어서 아웃렛 (텍스트 필드)을 인터페이스 빌더의 파일 소유자에 연결하는 것을 잊었다는 것입니다.

관련 문제