iOS で非 UI スレッドから UI ラベルを更新する方法 質問する

iOS で非 UI スレッドから UI ラベルを更新する方法 質問する

私は iOS 開発の初心者です。タイマーを実行するための単純な Objective-C クラス「MoneyTimer.m」があり、そこからタイマーの値の変化に応じて UI ラベルを更新したいと考えています。非 UI スレッドから UI 要素にアクセスする方法を知りたいです。Xcode 4.2 とストーリーボードを使用しています。

BlackBerry では、イベント ロックを取得するだけで、非 UI スレッドから UI を更新できます。

//this the code from MyTimerClass

 {...
    if(nsTimerUp == nil){

        nsTimerUp = [NSTimer scheduledTimerWithTimeInterval: 1.0 target:self selector:@selector(countUpH) userInfo:nil repeats: YES];
 ...}

(void) countUpH {

sumUp = sumUp + rateInSecH;
 **//from here i want to update the UI label **
...
}

ベストアンサー1

最も早くて簡単な方法は次のとおりです。

- (void) countUpH{

   sumUp = sumUp + rateInSecH;
   //Accessing UI Thread
   [[NSOperationQueue mainQueue] addOperationWithBlock:^{

      //Do any updates to your label here
      yourLabel.text = newText;

   }];
}

この方法であれば、別の方法に切り替える必要はありません。

お役に立てれば。

サム

おすすめ記事