0

在我的应用程序中有两个视图。view1 有一个功能测试

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

和一个计时器

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

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

4

3 回答 3

5

在 AppDelegate 中定义定时器,

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

@property (nonatomic, retain) NSTimer *timer;

@end

并通过在您的视图 .h 文件中创建 TimerDemoAppDelegate 对象在您的两个视图中使用计时器

@interface View1 : UIViewController
{
TimerDemoAppDelegate *appDelegate;
}

在你看来 .m 文件

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

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

于 2012-07-31T05:51:14.797 回答
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;
于 2012-07-31T05:39:08.003 回答
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];

享受这段代码......

于 2012-07-31T05:56:11.067 回答