首先,[self viewDidLoad];
当你猜到你的viewDidLoad
.
其次什么是retryInteger?我将假设对于这个答案,如果用户已经点击了这个按钮,或者做了一些事情,那么它就是你设置的某种值。
所以让我们看看我们可以用你的代码做什么:
- (IBAction)retryOrNextLevel:(id)sender {
if (retryInteger == 1){
[self callSomeMethodThatIsntVIEWDIDLOAD];
}
if (retryInteger == 2){
Level2 *secondLevel = [[Level2 alloc] initWithNibName:@"Level2" bundle:nil];
[secondLevel setTitle:@"Level2"];
// Pushing onto a navigationController would seem more logical (Would recommend)
// [self.navigationController pushViewController:secondLevel animated:YES];
// Otherwise you want this
[self presentViewController:secondLevel animated:YES completion:nil];
}
}
此答案中假设了几件事,在您更新问题之前,此答案是基于假设的。首先Level2
它是UIViewController
什么?你得到什么错误?由于您的原始代码应该呈现视图控制器,所以我假设当它试图呈现它时,您正在Level2
控制器中做一些破坏它的事情,因为如果Level2
控制器中出现问题,那么它将显示在这一行[self presentViewController:secondLevel animated:NO completion:Nil];
我也会让它变得生动,就好像你说不一样,这使这modalTransitionStyle
毫无意义。
如果您更新您的问题,我将尝试改进此答案,但在您这样做之前,我无能为力。如果您的应用程序在崩溃时退出,则使用Exception Breakpoint
在引发异常时停止。
编辑
你没有打电话给[self retryOrNextLevel]
你想打电话给[self retryOrNextLevel:myButton]
你没有打电话给正确的方法。无论您在哪里调用它,都缺少参数,因此您丢失了:myButton
。你的方法是
- (IBAction)retryOrNextLevel:(id)sender;
并不是
- (IBAction)retryOrNextLevel;
注意 sender 参数。
为了确保班级对您做出回应,retryOrNextLevel
您可以这样做
if([self respondsToSelector:@selector(retryOrNextLevel:)] {
// Code for calling the method.
}