2011-03-16 89 views
1

這一個讓我發瘋。我正在構建一個iphone應用程序,其中第一個視圖是登錄視圖。 UIViewController,當用戶成功登錄時,我想顯示我的表格視圖。不知何故,我只是遇到了很大的問題。從UIViewController更改爲UITableViewController

在我的應用程序委託我加載我的loginViewController,然後我想從loginViewController加載我的listViewController。

從UIViewController切換到UITableViewController的邏輯是什麼?

回答

4

你最好在你的應用程序委託中做它,當然不會將UITableViewController.view添加到UIViewController.view中......只需將它添加到UIWindow中,然後解除舊的UIViewController(removeFromSuperView它的視圖,然後釋放它)

編輯:

這就是我如何管理:

我在的appDelegate添加一個方法:

-(void)switchMainView; 

,並從我的UIViewController我只是這樣稱呼它:

[[[UIApplication sharedApplication] delegate] switchMainView]; 

在switchMainView我只是 移除上海華我UIViewController.view, 發佈的UIViewController, ALLOC了的UITableViewController和初始化,然後 添加其查看該窗口的應用程序:

-(void)switchMainView{ 
    if (mainView!=nil){ // mainView is the UIViewController 
     [mainView.view removeFromSuperview]; 
     [mainView release]; 
     mainView = nil; 
    } 
    Menu *vc; // Menu is my class, subClass of a UITableViewController 
    vc = [[Menu alloc] init]; 
    nc = [[UINavigationController alloc] initWithRootViewController:vc]; 
    [window addSubview:nc.view]; 
    [vc release]; 
} 

,然後我做同樣的回去,最終

+0

因此,一個偉大的方式做到這將註冊在應用程序委託的通知,然後把它當用戶在得到loged並再次在應用程序委託中更改視圖?或者是否有可能直接從loginViewController在應用程序委託中運行方法? – tobros91 2011-03-16 10:40:22

+0

@tobros:在我的回答 – meronix 2011-03-16 10:54:08

+0

中看到我的新編輯,謝謝你做到了! – tobros91 2011-03-16 11:39:13

1

假設你已經自定義的UITableViewController創建:

YourTableViewController *vc = [[UITableViewController alloc] initWithStyle:...]; 
[self presentModalViewController:vc animated:YES]; 
[vc release]; 
+0

我會建議從你的tableviewcontroller打開loginViewController的另一種方法。通過這種方式,您可以檢查用戶是否已經登錄到viewDidLoad中,並且如果不通過presentModalViewController顯示loginViewController。你可以創建一個協議並在tableViewController上實現它,loginViewController調用一個方法讓tableviewcontroller知道用戶已經登錄。 – rckoenes 2011-03-16 10:45:44

相關問題