というメソッドでは更新されません。かなり簡単なiOS/ObjCプログラムを実行しています。ボタンをクリックすると、for..nextをループし、カウンタと写真が表示されます。iOSのUI要素は、
for (int i=0; i <= numberOfExercises; i++) {
exerciseName = [exercises objectAtIndex:j][0];
[self.lastLabel setText:exerciseName];
[self.lastLabel setNeedsDisplay];
usleep(1000000);
NSLog(@"Count: %d Name:%@", i, exerciseName);
}
ただし、画面上の実際のテキストフィールドは更新されません。
私が知っているすべてを試しましたが、見えないものがあります。
double delayInSeconds = 0.1;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
NSLog(@"inside the block");
[self.ExerciseName setText:exerciseName];
[self.ExerciseName setNeedsDisplay];
[self.exerciseImage setNeedsDisplay];
});
、ループが始まる前に私が直接割り当てを行ってきた:
(IBAction)btnExerciseClicked:(id)sender {
for (int i=0; i <= numberOfExercises; i++) {
exerciseName = [exercises objectAtIndex:j][0];
exerciseImageName = [exercises objectAtIndex:j][1];
exerciseImageName = [exerciseImageName stringByAppendingString:@".jpg"];
self.exerciseImage.image = [UIImage imageNamed:exerciseImageName];
[self.ExerciseName setText:exerciseName];
[self.ExerciseName setNeedsDisplay];
[self.exerciseImage setNeedsDisplay];
}
は、私はそこにブロックを置いてきました
exerciseName = [exercises objectAtIndex:5][0];
[self.ExerciseName setText:exerciseName];
[self.ExerciseName setNeedsDisplay];
NSLog(@"Name: %@", self.ExerciseName.text);
私は」別の方法を書いても:
そして結局のところ、メソッドが完了するまで表示されません。遅延を入れて:usleep(1000000);
データが要素内にあることを確認しました。私はコードとIBで要素を設定しました。
アプリはかなりシンプルで、画面上でボタンが押され、データが読み込まれ、配列が歩かれ、表示アイテムが配列内の要素に基づいて更新されます。
データはテキストフィールドにありますが、これは確認済みです。それはメソッドを終了した後にのみ表示されます。
メソッドが終了すると、text/picが正しく表示されます。
したがって、テストとして、for..nextループを2回実行し、ボタンを何度も繰り返しクリックしました。確かに、メソッドを離れると適切に表示されます。
このメソッドでは、表示を更新することができません。 (これにはスライダも含まれます)。
ディスプレイを更新するためにメソッドを終了する必要があるのはなぜですか?
新しいビューコントローラーを追加して、すべてのUI要素を移動しましたが、まだ更新されません。 – KarlJay
各ループの 'ExerciseName'と' exerciseImage'の値を上書きする深い意味はありますか?実際には 'setNeedsDisplay'行は必要ありません。すべてのUI更新がメインスレッド上で実行されるように注意してください。 – vadian
実際にここで何をしたいですか?配列から最後のオブジェクトデータをテキストフィールドや画像などに入力したい場合、ここで試してみる必要がありますか? – CodeChanger