【发布时间】:2013-07-28 03:18:52
【问题描述】:
我有一个带有表格视图属性的视图控制器和一个通过导航栏连接到表格视图中每个单元格的详细视图控制器。在详细视图控制器中是一个倒数计时器,在用户创建任务时指定了一个时间间隔。我试图让每个单元格(或任务)都有一个独特的细节视图控制器。我正在使用核心数据。这就是我现在拥有的:
-(void)tableView:(UITableView *)tableView
didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if (!self.detailViewController) {
self.detailViewController =
[[DetailViewController alloc] initWithNibName:@"DetailViewController"
bundle:nil];
}
Tasks *task = [[self fetchedResultsController] objectAtIndexPath:indexPath];
self.detailViewController.testTask = task;
[[self navigationController] pushViewController:self.detailViewController
animated:YES];
}
DetailViewController.m
@interface DetailViewController : UIViewController <UIAlertViewDelegate>
@property (weak, nonatomic) IBOutlet UILabel *timeLeft;
@property (weak, nonatomic) IBOutlet UILabel *timerLabel;
@property (nonatomic, strong) Tasks *testTask;
@end
我觉得这是实现细节视图控制器的正确方法,因为它最大限度地减少了需要创建的内存量,但它并不真正适合我的需求。当前,当用户点击一个单元格,然后点击返回,然后点击另一个单元格时,只会加载第一个单元格的属性。此外,如果我要删除一个单元格,则无法使用此方法使其计时器(我认为)无效。有什么建议吗?
---编辑--- 我想我应该问的问题是:我应该如何使每个详细视图都有一个递减标签(从计时器获取其信息)?
【问题讨论】:
-
是否需要同时运行多个定时器?
-
是的。如果用户启动计时器,即使他们在详细视图控制器上点击,它也需要运行,直到时间结束或用户停止计时器。
-
我会尝试从您的主视图控制器管理您的计时器,而不是为每个细节设置一个计时器。
-
嗯..为什么以及如何做到这一点?
-
当按下后退按钮时,详细视图控制器应该会耗尽内存,这是您使计时器无效的问题。此外,如果用户有多个任务同时进行,他们可能希望同时查看两个任务的进度。 How - 我将在单元格中包含任务描述、开始/停止按钮和 timeLeft 标签。让 1 个计时器进入您的主程序并存储所有已启动的单元格的数组 - 每秒钟都会从您的计时器中增加它们的标签。
标签: iphone ios objective-c uiviewcontroller timer