2010-07-18 9 views
0

나는 항상 다음과 같은 형식으로보기 컨트롤러를로드아이폰 - 오류로드 뷰 컨트롤러

-(void)loadSelectUser { 
    MyViewController *nextController = [[MyViewController alloc] initWithStyle:UITableViewStyleGrouped]; 

    MyAppDelegate *delegate = [[UIApplication sharedApplication] delegate]; 
    [delegate.navigationController pushViewController:nextController animated:YES]; 
    [nextController release]; 
} 

그리고 내가 그와 함께 문제를 가진 적이 없었습니다. 하지만 지금은 다음보기가 완전히로드되지 않는다는 문제를 다루고 있습니다. 탐색 모음이 나타나고 viewDidLoadnumberOfSectionsInTableView 메서드가 모두 호출됩니다. 그게 다야. 표가 나타나지 않고 이전보기가 계속 표시됩니다.

메모리 누수가 있거나 올바르게 연결되지 않았다는 것을 의미합니다. 이게 올바른 길인가요? 그렇다면이 문제를 디버깅하기위한 최선의 제안은 무엇입니까? 내 코드에는 오류 메시지가 없으므로 어디서부터 시작해야할지 모르겠습니다. 다른 컨트롤러에서보기를 제대로로드하지만, 어떤 이유로이 특정보기 * 후에보기를 수행하지 않습니다.

*이보기는 개체를 다운로드하고 저장하는 등 많은 데이터 조작을 수행합니다. 그러나 다시 한번, 모든 것이 제대로 작동하는 것처럼 보입니다. 다음 뷰를 완전히로드하는 네비게이션 컨트롤러를 망칠까요?

아, 그리고 더 많은 것을 엉망으로 만들기 위해, 때때로, 제대로 작동합니다. 하지만 한 번 더 실행하면 다시는 실행되지 않습니다.

업데이트 : 새로운보기 컨트롤러를 밀어 넣는 적절한 방법에 대한 TechZen 의견이 조금 도움이되었습니다. 내가 tableviewcontroller를 밀고 있지 않다면 더 높은 속도로 작동합니다. 액션에 따라 내 뷰는 nit 파일로 UITableViewController 또는 UIViewController를 푸시합니다. 둘째 보통 (항상은 아님) 작동합니다.

또한 다른보기에서 모달보기를 추가하고 있습니다. 그러나 내가 항상 [self dismissModalViewControllerAnimated:YES];을 사용하여 그것을 닫으려고 할 때 그것은 항상 작동하지 않습니다. 다시 한 번 맞았습니다. 누구든지 창 전환이 몹시 까다로운 이유를 알고 있습니까?

답변

2

네비게이션 컨트롤러를 가져 오기 위해 앱 델리게이트를 호출하는 것은 불필요하고 위험합니다. 네비게이션 컨트롤러 스택의보기 컨트롤러에는 채워진 navigationController 속성이있어서 self.navigationController 만 사용할 수 있습니다.

앱 위임자의 내비게이션 컨트롤러를 호출하는 것은 위험합니다. 왜냐하면 현재 푸시를 호출하는보기 컨트롤러를 보유하고있는 것과 동일한 내비게이션 컨트롤러를 가져올 수 있다고 보장 할 수 없기 때문입니다. 이론 상으로는 두 개의 중첩 및 충돌 탐색 컨트롤러가있을 수 있습니다.

코드를 self.navigationController으로 전환하고 문제가 해결되는지 확인하십시오.

+0

와우. 전에 그걸 알았 으면 좋았을 텐데. 그러나 나는 지금 그것을 배워서 매우 감사합니다. 그것은 바로 그것을 풀었다. 고맙습니다! – RyanJM

+0

나는 너무 빨리 말했을 것 같다. 처음 시도했지만 작동하지 않습니다. 그것은 여전히 ​​무작위로 작동합니다. – RyanJM