iphone - 每个细节 View Controller 一个计时器

标签 iphone ios objective-c uiviewcontroller timer

我有一个带有 TableView 属性的 View Controller 和一个通过导航栏连接到 TableView 中每个单元格的详细 View Controller 。在详细 View Controller 中是一个倒计时计时器,在用户创建任务时指定间隔。我正在努力使每个单元格(或任务)都有一个独特的详细 View Controller 。我正在使用核心数据。这就是我现在拥有的:

-(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

我觉得这是实现细节 View Controller 的正确方法,因为它最大限度地减少了需要创建的内存量,但它并不真正适合我的需要。当前,当用户点击一个单元格,然后点击返回,然后点击另一个单元格时,只会加载第一个单元格的属性。此外,如果我要删除一个单元格,则无法使用此方法使其计时器(我认为)无效。有什么建议吗?

---编辑--- 我想我应该问的问题是:我应该如何使每个详细信息 View 都有一个递减标签(从计时器获取信息)?

最佳答案

您最好的解决方案是在这种情况下正确地遵循 MVC。在你的情况下,你正在为你正在创建的每个 detailViewController 存储数据(例如任务和倒数计时器/间隔等)。在 rdelmar 的 answer 中。他建议您将所有 View Controller 存储在一个 mutableArray 中。我不同意这两种方法,因为当您关闭 View Controller (正如您自己所见)时,您的方法会出现内存问题,而在 rdelmar 的情况下,您将 viewControllers(连同它们引用的数据)存储在一个可变数组中..很浪费。

这样想..你想在一个地方跟踪数据(这不受现在显示的 View 的影响..它可以是 detailVC 1 或 100 或带有 tableView 的 VC 或任何一个)同时,您希望一次分配一个 detailVC,它只显示数据源告诉它显示的任何内容。这样你就可以扩展你的应用程序(想象一下如果你的表中有数百个索引会发生什么......你会存储数百个 View Controller 吗?非常昂贵和冗余)。

所以简单地创建一个 singelton.. singelton 将有一个 mutableArray 存储与每个被点击的表索引相关的计时器等等.. singelton 也会在每次点击一个单元格时启动计时器并保留对它(即存储 NSIndexPath),以便当您在 detailVCs 和表之间来回跳转时.. 计时器仍然按照您的要求运行(b/c 它们由 singelton 引用)。 DetailVc 将简单地询问 singelton 它应该显示什么并显示它。

希望对您有所帮助。如果您需要任何进一步的说明,请告诉我。

关于iphone - 每个细节 View Controller 一个计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17904661/

相关文章:

iphone - 通过单击按钮替换滑动以删除的操作

iphone - UIScrollView 在 iOS 7 StoryBoard 中不滚动

ios - 以编程方式创建 subview ,然后添加 TapGesture For Action

ios - 关闭UIAlertController时调用UINavigation的dismissViewControllerAnimated方法

ios - 带有突出显示图像的自定义 UITableViewCell

ios - 在 iPhone 上播放视频时没有声音,而铃声是静音的。使用 YouTube-Player-iOS-Helper

iPhone——在项目中嵌套库而没有链接器错误?

ios - 在 iOS 应用中添加 revmob 广告时出现构建错误

ios - 设备旋转时如何为 View 设置正确的边界?

ios - 如何以编程方式将 iOS View 连接到处理程序