0

내 응용 프로그램은 ARC를 사용하며 사용하지 않는 타사 소프트웨어에 문제가 있습니다. 빌드 단계에서 -fno-objc-arc를 설정하여이 문제를 해결할 수 있습니다. 그러나 두 번 호출되기 때문에 하나의 ViewController가 pp를 충돌시키는 문제가 남아 있습니다. 내 자신의 TableView에서 내가 설명하려고합니다Release ViewController

...

나는 도시 비행선의 매장에 가져 선을 선택합니다. 내가 볼 수있는 한 그것은 모달 창으로 나타납니다. TableView에서 선택한 항목의 DetailView를 직접 가리키는 TableView입니다. 나는 그 물건을 사서 그것을 다운로드하기 시작한다. Urban Flyship (항공기 탑승구)의 대표가 전화를 끊을 때 TableView에 알려줍니다. 나 [자기 dismissModalViewControllerAnimated : 예]; 내 자신의 TableView에서 해당 대리인 끝에 UAStore 및 내 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]; 

하지만 지금까지 아무 것도 작동하지 않았습니다. 누군가가 내 약간의 혼합 된 설명을 따라 머리카락을 저장할 수 있기를 바랍니다.

* * 내 TableView로 돌아 왔을 때 UADetailViews의 viewDidUnload에서 NSLog 호출이 호출되지 않습니다.

답변

0

당신이 가진 모달 뷰 컨트롤러를 해제 코드 블록을 참조하는 것이 도움이 될 것입니다 : 당신이 대리자 메서드에서 호출하는 경우 때문에, 나에게 아주 제대로 보이지 않습니다

[self dismissModalViewControllerAnimated:YES]; 

구현에서 "self"는 객체를 나타냅니다. 위임 메서드를 통해 View Controller에 대한 참조를받는 경우이를 사용하여이를 닫으십시오. 당신이 당신의 자신의 뷰 컨트롤러에서 해고하려고, 당신은 아이폰 OS 5.0을 실행하는 경우, 오히려 parentViewController보다 presentingViewController를 사용하여 참조 할 필요가 예컨대 :

[[self presentingViewController] dismissModalViewControllerAnimated:YES]; 
1

대답은 당신이 동일한 예를 UAProductDetailViewController 여러 차례의을 추진하려고하는 시스템

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

에 의해 던져진 예외입니다. 인스턴스를 만들어 푸시해야합니다.

+0

내가 어떻게해야합니까? UAStoreFront에서 호출하려면이 코드를 사용합니다. '[UAStoreFront displayStoreFront : self withProductID : levelA1_1.lessonVideofile animated : YES]; ' – Jorgen

+0

상황에 대한 구체적인 내용을 모르겠습니다. 스토리 보딩을 사용하고 있습니까? [[UAProductDetailViewController alloc] initWithNibName : @ "YourNibName"]과 같은 새 인스턴스를 만들 수 있습니다. – jbat100

+0

스토리 보딩 (storyboarding)을 사용하고 싶지만 앱 ios4를 친숙하게 유지해야합니다.당신의 제안에 관해서, 나는 어디에서 그 코드를 넣을 지 모른다. 또한 NAB 이름이 없습니다. UA의 NIB입니다. 나는 이것에 대하여 정말로 혼란 스럽다. – Jorgen