我有一个RootViewController,它使用实例方法presentViewController呈现FirstViewController:animated:completion:。我在方法中有一条日志消息(“呈现”);它看起来所以我知道我的root在我的FirstViewController中被调用,但由于某种原因,消息会在程序崩溃之前连续记录。
RootViewController的
-(void)presentViewController:(UIViewController *)viewControllerToPresent
animated:(BOOL)flag
completion:(void (^)(void))completion {
NSLog(@"Presenting");
[self presentViewController:viewControllerToPresent animated:flag completion:completion];
}
FirstViewController(我调用该方法)
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:YES];
MyRootController *root = [[MyRootController alloc] init];
[root presentViewController:self animated:YES completion:nil];
NSLog(@"asdhflkajshdfl %@...", [self presentingViewController]);
}
我不确定如何才能让方法只执行一次。这是我第一次使用该方法,但我认为该消息只会被记录一次。
答案 0 :(得分:1)
我怀疑你想知道,当调用presentViewController...
时(编辑:...,因为只有日志调用和对其中相同方法的调用)。您可能还想调用超类方法,因此需要使用super
而不是self
:
-(void)presentViewController:(UIViewController *)viewControllerToPresent
animated:(BOOL)flag
completion:(void (^)(void))completion {
NSLog(@"Presenting");
// Note super here:
[super presentViewController:viewControllerToPresent animated:flag completion:completion];
}
在原始代码中,您从内部调用相同的方法。这导致了许多日志消息。