2011-03-20 4 views
0

사용자가 내 데이터베이스에 이미 사용자 프로필을 만들 었는지 여부에 따라 내 앱이 특정보기를 열도록 지시하려고합니다. 그래서 기본적으로로드 할 때보기를 열도록 앱을 안내 하시겠습니까?

-

- (void) viewWillAppear:(BOOL)animated { 

//all my ASIHTTPRequest code here 
//blah blah blah 

NSString *responseString = [request responseString]; 

if ([responseString isEqualToString:@"noexistingdata"]) 
{ 

FriendsViewController *friendsview = [[FriendsViewController alloc] initWithNibName:nil bundle:nil]; 

//SOMETHING NEEDS TO GO HERE TO MAKE THIS WORK! 

} else if ([responseString isEqualToString:@"success"]) 
{ 

//do whatever 

} 

} 

난 그냥 내가 IBAction를 사용해보십시오 것이지만,이 앱의를위한 빈 공간에서와 같이 분명히 문제가 해결되지 것입니다 ...보기를 변경하기위한 가장 기본적인 코드를 원하는 (사용자가 누르는 버튼에 대한 응답이 아닌) 시작, 또한 작동하지 않는 공백에있는 공백에 대해 생각했습니다.

그래서 기본적으로 내가 필요로하는 것입니다 :

앱> 앱 내 서버에서 응답을> 수신

시작 (IF 응답 = "이"로드 뷰 "X") (IF 응답 = "그"로드 뷰 " Y ")

단서가 있습니까?

추신 : 이것이 applicationDidFinishLaunching입니까?

답변

0

-viewWillAppear :보기가 표시되기 직전에 호출됩니다. 아마도 a) 일부 동기식 네트워크 요청을 실행하고 b) 다른보기 컨트롤러를로드하기에 좋은 시간은 아닙니다.

"서버에 연결 중"또는 "사용자 자격 정보 검색 중"과 같은 메시지를 표시하는보기 컨트롤러를 만들도록 응용 프로그램 위임을 제안하는 것이 좋습니다. 애니메이션 회 전자를 추가하여 사용자가 기다려야한다는 사실을 사용자에게 알릴 수 있습니다.이 시점에서 허용되는 경우 모두 가능합니다. 그런 다음 해당 컨트롤러의 -viewDidLoad 메서드와 같은보기가 표시된 후에 비동기 네트워크 연결을 시작하여 서버와 통신하십시오. 응답을 받으면 다음에 인스턴스화 할 뷰 컨트롤러를 결정하고 그렇게하십시오.

+0

굉장 하긴한데, 그래도 여전히 위의 코드가 "- (void) viewDidLoad {"라고 가정 해 보겠습니다. 코드가 viewDidLoad void에서 뷰를 변경하려면 어떻게해야합니까? –

+0

-viewDidLoad에서 네트워크 요청을 시작하십시오. 요청이 완료되면 다음보기로 전환하십시오. 보기로 전환하는 방법은 앱에 따라 다릅니다. 탐색 컨트롤러를 사용하는 경우 새로운보기 컨트롤러를 누르기 만하면됩니다. 그렇지 않다면, 여러분의 -application : didFinishLaunchingWithOptions :에서와 같이 윈도우의 서브 뷰를 보도록하십시오. – Caleb

관련 문제