2009-09-02 6 views
4

テキストフィールドのユーザー名フィールドを更新しようとしています。現在、「Username」が書かれたプレースホルダがあります。私は設定ファイルからユーザー名をロードしていますが、わかりやすくするためにユーザー名をハードコードしています。UITextFieldテキストフィールドが設定されていません

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

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

これは機能しません。しかし、ボタンをクリックすると、テキストフィールドが更新されます。

- (IBAction)login:(id)sender{ 
    [email protected]"test"; 
} 

ボタンはテキストを更新しますが、viewDidLoadからは更新できません。これはスレッドの問題ですか?私はとてもシンプルなものがとても長くかかるとは信じられません。

答えて

9

この時点では、コントロールが作成されていない可能性があります。

ViewControllerの値を- (void)viewDidAppear:(BOOL)animatedに設定してみてください。

- (void)viewWillAppear:(BOOL)animatedもお試しください。

+2

私は、viewDidLoadの後にコントロールが作成されていることは間違いありません。 username.placeholder = @ "Test"を使用してプレースホルダを変更できます。 username.text = @ "Test"は機能しません。 –

+0

OK、私はStanfordのビデオの1つを見て漠然とした思い出を持っていますし、読み込み順序、初期化、フレームワークが必要なまで読み込まずに怠惰であることについて言及しています。 – Xetius

+0

しかし、私の記憶は吐き気を上げることができます! – Xetius

3

私は理由を知りませんが、それは最初に

=>これは

0

あなた」が動作します- (void)viewDidAppear:(BOOL)animated

を使用し、表示された後あなただけのテキストフィールドのテキストを変更することができますプロパティ内でテキストフィールドをIBOutletとして宣言しました。私がした間違いは、アウトレット(テキストフィールド)をInterface Builderのファイルオーナーに接続するのを忘れたことでした。

関連する問題