2011-03-16 92 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

相关问题