计算View Controller和另一个View Controller的开关之间的时间

时间:2015-03-26 20:14:31

标签: ios uiview nstimer viewcontroller

我创建了一个显示内部活动指示器的UIView类。此视图通知您当时应用程序正在执行操作。

我正在尝试将此UIView应用于我的应用程序,但我遇到了问题......

我希望能够计算应用从用户输入用户名和密码的那一刻起的时间,直到访问应用主屏幕的那一刻。在那个时刻,我会看到我的UIView告诉你,那时他正在进行手术......

一旦显示新的视图控制器,自定义UIView就会消失......

为了做到这一点,我想到了一个N​​STimer,可能在我的UIView类中有一个特定的方法,但我不知道如何设置定时器以返回视图控制器切换到另一个之间的正确时间..

有人可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

如果我的理解正确你想要设置一个计时器,那么你想在另一个视图控制器中显示执行时间吗?

我会创建一个带有nsdate对象的单例,我会将该nsdate对象设置为当前时间,然后在用户完成他正在做的任何事情之后,我将创建另一个nsdate对象并比较传递的时间。

所以创建一个objective-c类,我创建了一个叫做showtimer的东西 .h文件

//
//  ShowTimer.h
//  app
//

#import <Foundation/Foundation.h>

@interface ShowTimer : NSObject
{
    NSDate *passed;
}

@property (nonatomic, retain) NSDate *passed;
+ (id)sharedManager;
@end

.m文件

//
//  ShowTimer.m
//  app
//

#import "ShowTimer.h"

@implementation ShowTimer
@synthesize passed;

#pragma mark Singleton Methods

+ (id)sharedManager {
    static ShowTimer *sharedMyManager = nil;
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        sharedMyManager = [[self alloc] init];
    });
    return sharedMyManager;
}

- (id)init {
    if (self = [super init]) {

    }
    return self;
}

- (void)dealloc {
    // Should never be called, but just here for clarity really.
}
@end
视图控制器中的

导入#import "ShowTimer.h" 然后在任何地方初始化计时器

ShowTimer *timer=[ShowTimer sharedManager];
    timer.passed=[NSDate date];

然后在另一个视图/ viewcontroller中调用它,无论你喜欢什么

ShowTimer *timer=[ShowTimer sharedManager];
    NSDate *methodFinish = [NSDate date];
    NSTimeInterval executionTime = [methodFinish timeIntervalSinceDate:timer.passed];
    NSLog(@"Execution Time: %f", executionTime);