textFieldShouldReturn
ユーザーは、メソッドが呼び出されるたびに新しいテーブル セルを作成します。そのセルにタイマーをサブタイトルとして追加して、すべてのセルに異なるタイマーが設定されるようにします。タイマーが切れたら、セルを破壊する必要があります。
私はここで道順を探しているだけですが、どのように行けばよいと思いますか?
textFieldShouldReturn
ユーザーは、メソッドが呼び出されるたびに新しいテーブル セルを作成します。そのセルにタイマーをサブタイトルとして追加して、すべてのセルに異なるタイマーが設定されるようにします。タイマーが切れたら、セルを破壊する必要があります。
私はここで道順を探しているだけですが、どのように行けばよいと思いますか?
これを行う簡単な方法の 1 つは、CountDown クラスと CountDownDelegate プロトコルを作成することです。
CountDown クラスは、応答してタイマーを処理し、カウントダウンが 0 に達したときにデリゲートのメソッドを呼び出します。countDownDidReachesZero:(CountDown *)countDown
次に、UIViewController (または UITableViewController) はカウントダウンのリストを配列に保持し、CountDownDelegate に準拠します。
- (void)countDownDidReachesZero:(CountDown *)countDown
{
NSMutableArray *array = [self.countdowns mutableCopy];
[array removeObject:countDown];
self.countdowns = array; //if property is set with copy flag
[self.tableView reloadData]; // get index and remove cell with effect would be better
}
- (BOOL)textFieldShouldReturn:(UITextField*)textField
{
NSMutableArray *array = [self.countdowns mutableCopy];
[array addObject:[[CountDown alloc] init]];
self.countdowns = array;
[self.tableView reloadData]; //or add the cell with effect
return YES;
}
detailLabel.text を更新するには、CountDownDelegate プロトコルでも実行できます。すべての countDown を更新する静的な NSTimer を 1 つだけ持つことをお勧めします。