通过IBAction加载ViewController

时间:2013-12-20 17:24:10

标签: ios objective-c storyboard viewcontroller 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'

我的Crashlog是:

enter image description here

enter image description here

2 个答案:

答案 0 :(得分:0)

如果您正在寻找使用Storyboard和Segues的正确方法......

  1. 在故事板中,按住CTRL并从原始视图控制器单击并拖动到目标视图控制器。这将从A到B创建和未命名的segue。
  2. 单击刚创建的行,在segue的设置中,将其更改为Modal(因为这是您在这种情况下看起来想要的那种),并为您的segue指定一个描述性名称(您正在使用问题中的代码中的“ShowAD”,这没关系)。您也可以在界面构建器中设置模态过渡样式,我相信。
  3. 让按钮点击动作如下所示

  4. -(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";
        }
    }         
    

    现在......说了这么多,我认为问题实际上是你手动设置了一个断点。如果你有一个蓝色箭头的东西,行号是,这是一个手动添加的断点。它会阻止你在该行执行程序......但这不是崩溃。您可以右键单击断点并单击“禁用”或“删除”断点,它将“修复”您的“崩溃”。

答案 1 :(得分:0)

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