2013-12-20 1 views
0

У меня есть IBAction в моем проекте, когда пользователь нажимает кнопку, он должен загрузить новый контроллер представления, однако код, кажется, разбиваяЗагрузка ViewController через 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

+1

Почему вы используете раскадровки и не используете segues? Также ... вы установили точку останова вручную, что приводит к «краху» вашего приложения? – nhgrif

+0

Как мне изменить его для использования segues? – Omar

+0

Привет Омар! вы все еще не решили эту проблему? хорошо, вы можете опубликовать весь журнал аварий? – Ilario

ответ

0

Если вы ищете правильный путь для использования раскадровки и перетекает ...

  1. В раскадровку, удерживая CTRL и перетаскивание клика с исходного контроллера представления на контроллер представления назначения. Это создает и неназванный сегмент от A до B.
  2. Нажмите на строку, которая была только что создана, и в настройках вашего сеанса измените ее на 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" отправитель: self]; Я не установил точки останова вручную. – Omar

+0

Прошли ли вы шаги в построителе интерфейса (раскадровки), о которых я упомянул? – nhgrif

+0

На шаге 1.мне нужно ctrl + перетащить раскадровку в раскадровку или кнопку на раскадровку, чтобы создать segue? I ctrl + перетащить кнопку на раскадровку – Omar

0

Это не крушение, это похоже на установленную вручную точку останова! Отключите все точки останова в Xcode и запустите снова.

 Смежные вопросы

  • Нет связанных вопросов^_^