2012-03-31 3 views
0

私は連絡先データベースアプリケーションで作業しています。ユーザーはUITextFieldsに名前、電話、電子メールを入力し、SQLiteデータベースにデータを保存することができます。すべて正常に動作しますが、データが正常に保存されたときにユーザーに確認を表示するのが好きです。レコードがDBに保存されたときに「保存済み」を示すステータスラベルが実装されましたが、1秒後にテキストが消えるのが好きです。UILabel> 2番目のクリアされたUILabelのテキストを表示しました(保存済み)

あなたが助けてくれることを願って、self.statusLabel.text = @"Saved";の直後にsleep()機能を実装しようとしましたが、機能しませんでした。 以下のコードでは、ステータスラベルが「Saved」と表示されますが、1秒後に自動的に消えます。

- (IBAction)saveButtonTapped:(id)sender 
{ 
    sqlite3_stmt *statement; 

    const char *dbpath = [databasePath UTF8String]; 

    if (sqlite3_open(dbpath, &timings) == SQLITE_OK) 
    { 
     NSString *insertSQL = [NSString stringWithFormat:@"INSERT INTO TIMINGS (time) VALUES (\"%@\")", self.timeLabel.text]; 

     const char *insert_stmt = [insertSQL UTF8String]; 

     sqlite3_prepare_v2(timings, insert_stmt, -1, &statement, NULL); 

     if (sqlite3_step(statement) == SQLITE_DONE) 
     { 
      self.statusLabel.text = @"Saved"; 
      self.timeLabel.text = @"0:00:00"; 

     } 
     else 
     { 
      self.statusLabel.text = @"Failed"; 
     } 
     sqlite3_finalize(statement); 
     sqlite3_close(timings); 
    } 
} 
+1

チェックアウトするもう一つの事はあるのUIView +(無効)animateWithDuration:(NSTimeInterval)期間遅延:(NSTimeInterval)遅延オプション:(UIViewAnimationOptions)オプションアニメーション:(無効(^)(無効))アニメーション完了:(void(^)(BOOL終了))完了。メリットは、テキストが消えていくように、1.0秒から始まり、何かクールなことをすることができるということです。 – danh

+0

バージョン2.0になります:)。ヒントをありがとう。 –

答えて

1

そうでなければあなたは秒後にNSTimerその火を実装を検討してラベルをきれいにする

[[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:1]]; 

を使用してみてください。

+0

うまく動作し、実装が簡単です。ありがとうございました。 –

0

あなたは、あなたが以下のように使用することができますビューを使用して簡単にしたい場合は、アンドロイドと同じあなたはAの後、ラベルのテキストを取り除くように、アクションを実行するためにグランドセントラル派遣を使用することができます

https://github.com/alexleutgoeb/ALToastView

+0

あなたのコードもありがとうございます。 –

1

を行います一定の遅延。例えば。

double delayInSeconds = 1.0; 
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); 
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){ 
    self.statusLabel.text = @""; 
}); 
+0

皆さん、あなたもロックです、ありがとうございます。 –

1
- (void)clearLabel { 
    self.statusLabel.text = @""; 
} 

- (IBAction)saveButtonTapped:(id)sender { 
    //... 
    self.statusLabel.text = @"Saved"; 
    [self performSelector:@selector(clearLabel) withObject:nil afterDelay:1.0]; 
    //... 
} 
+0

皆さん、あなたもロック、ありがとうございます。 –

関連する問題