2013-12-20 266 views
0

加载视图控制器我有一个IBAction为在我的项目,当用户按下按钮时,它应该加载一个新的视图控制器,但是代码似乎崩溃通过IBAction为

我的代码如下:

- (IBAction)PurchaseItem:(id)sender { 
    PurchasedViewController *purchaseContr = (PurchasedViewController *) 
     [self.storyboard instantiateViewControllerWithIdentifier:@"ShowAd"]; 

    _purchaseController.productID = @"com.id"; 

    purchaseContr.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 

    [self presentViewController:purchaseContr animated:YES completion:NULL]; 
} 

当我在设备上运行应用程序,并按下按钮,应用程序坠毁在下面一行:

[self presentViewController:purchaseContr animated:YES completion:NULL]; 

我已经得到的信息是“主题1:1.3的断点”

我是崩溃日志:

enter image description here

enter image description here

+1

你为什么使用故事板而不使用segues?另外...你有手动设置一个断点,导致你的应用程序“崩溃”? – nhgrif

+0

我应该如何改变它以使用segues? – Omar

+0

嗨,奥马尔!你还没有解决这个问题?好的,你可以发布整个崩溃日志? – Ilario

回答

0

如果您正在寻找使用故事板和塞格斯正道......

  1. 在你的故事板,持有CTRL并单击并从原始视图控制器拖动到目标视图控制器。这创建了从A到B的未命名的继续。
  2. 单击刚刚创建的行,并在您的segue的设置中将其更改为Modal(因为在这种情况下,您需要这种类型),并给予你的segue是一个描述性的名字(你在问题的代码中使用了“ShowAD”,这没关系)。我相信你也可以在界面生成器中设置模态过渡风格。
  3. 让你按一下按钮操作这个样子的

-(IBAction)purchasItem:(id)sender { 
    [self performSegueWithIdentifier:@"ShowAD" sender:self]; 
} 

现在,设置目标视图控制器上的属性,添加另一个方法到您的始发视图控制器这样:

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([[segue identifier] isEqualToString:@"ShowAD"]) { 
     PurchasedViewController *purchaseContr = [segue 
      destinationViewController]; 
     purchaseContr.productID = @"com.id"; 
    } 
}   

现在...所有这一切说,我认为这个问题实际上是,你已经手动设置布雷亚k点。如果你的行号是蓝色箭头符号,那是一个手动添加的断点。它会停止你在该行的程序执行......但它不是崩溃。您可以右键单击断点并单击“禁用”或“删除”断点,它将“修复”您的“崩溃”。

+0

谢谢,但我得到一个线程1:断点上线[self performSegueWithIdentifier:@“ShowAD”sender:self];我没有手动设置任何断点 – Omar

+0

您是否经历了我提到的界面生成器(故事板)中的步骤? – nhgrif

+0

在步骤1。我是否需要按Ctrl +拖动故事板到故事板或故事板的按钮来创建Segue?我按Ctrl +拖动按钮到故事板 – Omar

0

这不是崩溃,它看起来像手动设置的断点!禁用Xcode中的所有断点并再次运行。