从另一个视图启动和停止一个视图的计时器

时间:2012-07-31 05:26:48

标签: iphone objective-c xcode

在我的应用中有两种观点。 view1有一个功能测试

  -(void) testing
  {
       NSLog(@"Testing : %d", (++x));
  }

和计时器

  timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self   selector:@selector(testing) userInfo:nil repeats:YES];

我想要的是从view2停止并运行此计时器。怎么做?

3 个答案:

答案 0 :(得分:5)

在AppDelegate中定义计时器,

@interface TimerDemoAppDelegate : NSObject <UIApplicationDelegate>
{
NSTimer *timer;
}

@property (nonatomic, retain) NSTimer *timer;

@end

通过创建TimerDemoAppDelegate对象,在两个视图中使用timer 在你的视图中.h文件

@interface View1 : UIViewController
{
TimerDemoAppDelegate *appDelegate;
}

在您的视图中.m文件

appDelegate=(TimerDemoAppDelegate *)[[UIApplication sharedApplication] delegate];

现在使用计时器作为appDelegate.timer。

答案 1 :(得分:0)

timer2添加到您的View2班级

@interface View2 : UIView{
    NSTimer *timer2;
}
@property (nonatomic,retain) NSTimer *timer2;
@end


@implementation View2
@synthesize timer2;
@end

并且喜欢这个

timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self   selector:@selector(testing) userInfo:nil repeats:YES];
view2.timer2 = timer;

答案 2 :(得分:0)

使用NSNotificationCenter,您可以从另一个视图调用方法,而无需创建任何对象。

viewDidLoad

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(button:) 
                                             name:@"Next"
                                           object:nil];

-(void)button:(NSNotification *) notification
{
 // write a code of timer here.....
}


//call this following from another view

[[NSNotificationCenter defaultCenter] 
 postNotificationName:@"Next" 
 object:self];

享受此代码....