ほぼ全ての拙作のアプリでは、テーブルセルでのバーの色変更タップとアップデートは時間差を使って行っています。
[NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(notifiyUpdate)
object:nil];
[self performSelector:@selector(notifiyUpdate)
withObject:nil
afterDelay:kUpdateCellShortInterval];
object-cで上記に書かれたperformSelector
はSwiftでは無くなってしまったようなので、以下のコードでは動かない。
NSObject.cancelPreviousPerformRequestsWithTarget(self, selector: notify, object: nil)
NSObject.performSelector(notify, withObject: self, afterDelay: Interval.UpdateCell)
幾つかの方法があるようですが、タイマーを使った方法が簡易でよいのですが、cancelPreviousPerformRequestsWithTarget
が無用になってしまう。処理の事前キャンセルも必要があるので、少し修正して最終的には以下のようになる。
private var tapTimer: NSTimer?
// 処理
cancelTimer()
tapTimer = NSTimer.scheduledTimerWithTimeInterval(Interval.UpdateCell, target: self, selector: notify, userInfo: nil, repeats: false)
//
func cancelTimer() {
if tappingTimer != nil {
tappingTimer!.invalidate()
}
}