0

たまたま、戻るボタンを押すようなものNSTimerから離れているときに、まだ発火していることに気付きました。ViewControllerその特定を終了する適切な方法は何NSTimerですか?

4

4 に答える 4

4

viewDidDisappear イベントで処理できます。

-(void)viewDidDisappear:(BOOL)animated {
    [myTimer invalidate];
}
于 2012-09-20T04:50:54.583 に答える
0

これは私があなたの質問から理解したことです:

別のViewControllerに移動しているときにタイマーを無効にしますか?

だからこれを試してみてください:

YourViewController *objController = [[YourViewController alloc] initWithNibName:@"YourViewController" bundle:nil];
[self.navigationController pushViewController:objController animated:YES];
[timer invalidate]; //your timer object goes here

編集:

または、ViewConrtollerをポップアップする/ viewContollerを閉じる場合は、

[timer invalidate];

そのコードのブロックを確認します。

于 2012-09-20T05:03:11.510 に答える
0

ビューコントローラーをポップしているときにイベントを発生させることができるカスタムナビゲーションコントローラークラスを作成することをお勧めします。

#import "customNavigationController.h"
#import "SettingsTableController.h"

@implementation customNavigationController

- (UIViewController *)popViewControllerAnimated:(BOOL)animated
{
    if([[self.viewControllers lastObject] class] == [SettingsTableController class]){
        [[(SettingsTableController *)[self.viewControllers lastObject] timer] invalidate];
        [UIView beginAnimations:nil context:NULL];
        [UIView setAnimationDuration: 1.00];
        [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown
                    forView:self.view cache:NO];

        UIViewController *viewController = [super popViewControllerAnimated:NO];

        [UIView commitAnimations];

        return viewController;
    } else {
        return [super popViewControllerAnimated:animated];
    }
}
@end

ここで、 SettingsTableController は NSTimer を持つクラスであるため、タイマーを無効にすることができます。これは、モーダルビューを表示したり、View Controller をプッシュしたりしているときにタイマーを無効にしないようにするのに役立ちます。

詳細http://www.hanspinckaers.com/custom-action-on-back-button-uinavigationcontroller

于 2012-09-20T05:15:22.983 に答える
0

このメソッドを使用して終了することができますNSTimer-

[timer invalidate]; //timer is your NSTimer

あなたはこのようにすることができinvalidateますtimer-

1.方法

-(void)viewWillDisappear:(BOOL)animated
{
    [timer invalidate];
}    

2.方法

-(void)viewDidDisappear:(BOOL)animated
{
    [timer invalidate];
}    
于 2012-09-20T04:51:59.893 に答える