2013-12-20 167 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中的所有斷點並再次運行。