2011-03-20 38 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 RESPONSE = 「THIS」,加載視圖 「X」)(IF RESPONSE = 「說」,LOAD VIEW「 Y「)

任何人都有線索?

PS:最好是列出這是applicationDidFinishLaunching?

回答

0

-viewWillAppear:在顯示視圖之前調用。這可能不是a)運行一些同步網絡請求和b)加載另一個視圖控制器的好時機。

我建議具有應用程序委託創建一個視圖控制器誰的觀點只是顯示一個消息,如「連接到服務器」或「獲取用戶憑據」或什麼的。您可以添加一個動畫微調器,讓用戶知道他們應該等待,如果這是他們允許在這一點上做的所有事情。然後,顯示該視圖後,如在控制器的-viewDidLoad方法,啓動一個異步網絡連接進行通話的服務器。當你得到一個響應時,決定下一個實例化哪個視圖控制器,並且這樣做。

+0

真棒,確定這是有道理的,但儘管如此,我們只是假設上面的代碼現在是「 - (無效)viewDidLoad中{」,將代碼是改變在viewDidLoad中的觀點作廢呢? – 2011-03-21 01:25:37

+0

在-viewDidLoad中啓動網絡請求。請求完成後,切換到下一個視圖。你如何切換到視圖取決於你的應用程序。如果您使用的是導航控制器,只需按下新的視圖控制器即可。如果沒有,請它的查看窗口的子視圖因爲在你做 - 應用中:didFinishLaunchingWithOptions :. – Caleb 2011-03-21 02:06:57

相關問題