我该如何完成这项任务?基本上,我将在UITableView中列出一个“seconds int”数组。那么如何将每个“秒int”分配给倒计时为零?我看到的可能的问题是,当尚未创建单元格时,计时器未被更新。如何实例化多个独立的NSTimers更新不同的ui元素?我在这里很丢失,所以非常感谢任何建议。出于视觉目的,我希望有这样的东西:
答案 0 :(得分:8)
从图像中看,您的模型看起来像是用户计划采取的一系列操作。我会这样安排:
1)MyAction是一个名字和截止日期的NSObject。 MyAction实现了这样的东西:
- (NSString *)timeRemainingString {
NSDate *now = [NSDate date];
NSTimeInterval secondsLeft = [self.dueDate timeIntervalSinceDate:now];
// divide by 60, 3600, etc to make a pretty string with colons
// just to get things going, for now, do something simple
NSString *answer = [NSString stringWithFormat:@"seconds left = %f", secondsLeft];
return answer;
}
2)StatusViewController保留模型的句柄,该模型是MyActions的NSArray,它还有一个NSTimer(只有一个)告诉它时间正在过去。
// schedule timer on viewDidAppear
// invalidate on viewWillDisappear
- (void)timerFired:(NSTimer *)timer {
[self.tableView reloadData];
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return self.model.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
MyAction *myAction = [self.model objectAtIndex:indexPath.row];
// this can be a custom cell. to get it working at first,
// maybe start with the default properties of a UITableViewCell
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
cell.textLabel.text = [myAction timeRemainingString];
cell.detailTextLabel.text = [myAction name];
}
答案 1 :(得分:0)
要在表格中使用花哨的UI内容,您可能希望将UITableViewCell子类化并在每个中创建一个定时器作为属性。然后,单元可以拥有一个委托,该委托响应TimerWentOff并处理警报或通知或诸如此类的响铃。每个计时器都会更新其单元格中的标签。
希望有所帮助。如果您有更具体的问题,请与我们联系。