Выпуск ViewController - PullRequest
       9

Выпуск ViewController

0 голосов
/ 08 декабря 2011

Мое приложение использует ARC, и у меня возникли проблемы с программным обеспечением сторонних производителей, которое его не использует.Я могу преодолеть это, установив -fno-objc-arc на этапе сборки.Однако я остаюсь с проблемой, когда один ViewController аварийно завершает работу pp, потому что он вызывается дважды.

Я попытаюсь объяснить ...

В моем собственном TableView я выбираю строку, которая вызываетГородской дирижабль StoreFront.Насколько я вижу, это выглядит как модальное окно.Это TableView, который непосредственно указывает на DetailView элемента, который я выбрал в моем TableView.Я покупаю предмет, и он начинает загружаться.У меня есть делегат от Urban Airship, который сообщает мне в моем TableView, когда предмет находится в безопасном месте на телефоне.I [self dismissModalViewControllerAnimated: YES];UAStore в конце этого делегата в моем собственном TableView и вернуть мой TableView.
Все работает просто отлично.

Проблема возникает, когда я выбираю новый продукт для покупки.Я получаю доступ к UA DetailView, но как только я нажимаю кнопку «купить», приложение вылетает.

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing the same view controller instance more than once is not supported (<UAProductDetailViewController: 0x3a35e0>)'

Мне кажется, что UAProductDetailViewController не выпущен.Файлы реализации Urban Airship находятся в библиотеке, поэтому они не доступны для настройки.Я пробовал много разных вещей, чтобы выбраться отсюда.

    [[DataModel sharedModel] saveContext]; 
    [[self tableView] reloadData]; 

  //  LessonListViewController *lessonListVC = [[LessonListViewController alloc] initWithNibName:@"LessonListView" bundle:nil];
    UserData *UserData_Array = [dm.UserData_Array objectAtIndex:0];
 //   lessonListVC.courseID = UserData_Array.current_levelName;
 //   lessonListVC.lessonsArray = UserData_Array.current_level;
    NSLog(@"Current level name:%@",UserData_Array.current_levelName);
    NSLog(@"Lessons array:%@",UserData_Array.current_level);

  //  lessonListVC.navigationItem.hidesBackButton = YES;

   // [self.navigationController popToViewController:lessonListVC animated:YES];
   // [UAProductDetailViewController removeFromParentViewController];
    self.tabBarController.tabBar.hidden = NO;
    [self dismissModalViewControllerAnimated:YES];

Но пока ничего не получалось.Надеюсь, кто-то может следовать моему несколько запутанному описанию и сохранить волосы.

** Вызов NSLog в viewDidUnload UADetailViews не вызывается, когда я возвращаюсь к своему собственному TableView.

Ответы [ 2 ]

0 голосов
/ 10 декабря 2011

Было бы полезно увидеть блок кода, в котором вы отклоняете модальный контроллер вида с помощью:

[self dismissModalViewControllerAnimated:YES];

Это мне не совсем подходит, так как если вы вызываете его в делегатеРеализация метода «self» будет относиться к вашему объекту.Если вы получаете ссылку на их контроллер представления через метод делегата, попробуйте использовать это, чтобы отклонить его.Если вы пытаетесь удалить его из своего собственного контроллера представления и используете iOS 5.0, вам нужно ссылаться на нее с использованием presentingViewController, а не parentViewController, например:

[[self presentingViewController] dismissModalViewControllerAnimated:YES];
0 голосов
/ 08 декабря 2011

Ответ в исключении, выданном системой

reason: 'Pushing the same view controller instance more than once is not supported'

Вы пытаетесь нажать один и тот же экземпляр UAProductDetailViewController несколько раз. Вы должны создать новый экземпляр и нажать его.

...