0

「if」ステートメントの条件が真の場合、2 番目の ViewController がインスタンス化される非常に基本的なアプリケーションがあります。2 番目の ViewController のロード時に、最初の ViewController のメソッドは引き続き実行されます。アプリケーションを正しく実行するには、以前のすべてのメソッドを停止する必要があります。

// FirstViewController.h 内

#import <UIKit/UIKit.h>

@interface FirstViewController : UIViewController
{
    NSTimeInterval beginTouchTime;
    NSTimeInterval endTouchTime;
    NSTimeInterval touchTimeInterval;
}

@property (nonatomic, readonly) NSTimeInterval touchTimeInterval;

- (void) testMethod;

@end

// FirstViewController.m 内

#import "FirstViewController.h"
#import "SecondViewController.h"

@implementation FirstViewController

@synthesize touchTimeInterval;

- (void)viewDidLoad
{
    [super viewDidLoad]; 
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
}

- (void) testMethod
{
if (touchTimeInterval >= 3)
{
NSLog(@"Go to VC2");
SecondViewController *secondBViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
             [self presentViewController:secondViewController animated:YES completion:nil];
}
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    beginTouchTime = [event timestamp];
    NSLog(@"Touch began");
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    endTouchTime = [event timestamp];
    NSLog(@"Touch ended");

    touchTimeInterval = endTouchTime - beginTouchTime;
    NSLog(@"Time interval: %f", touchTimeInterval);

    [self testMethod]; // EDIT: USED TO BE IN viewDidLoad

}

@end

2 番目の画面は正常に読み込まれますが、ログ メッセージは残ります。これは、SecondViewController のビューにあるにもかかわらず、FirstViewController のメソッドがまだ発生していることを意味します。私は何を間違っていますか?

4

3 に答える 3