从UIViewController更改为UITableViewController
这一个让我发疯。我正在构建一个iphone应用程序,其中第一个视图是登录视图。 UIViewController,当用户成功登录时,我想显示我的表格视图。不知何故,我只是遇到了很大的问题。从UIViewController更改为UITableViewController
在我的应用程序委托我加载我的loginViewController,然后我想从loginViewController加载我的listViewController。
从UIViewController切换到UITableViewController的逻辑是什么?
你最好在你的应用程序委托中做它,当然不会将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];
}
,然后我做同样的回去,最终
你可以使用我不认为有重大影响,但绝对他们可能有一些优势/劣势超过其他..
为更好的理解阅读下面的教程。
http://cocoawithlove.com/2009/03/recreating-uitableviewcontroller-to.html
假设你已经自定义的UITableViewController创建:
YourTableViewController *vc = [[UITableViewController alloc] initWithStyle:...];
[self presentModalViewController:vc animated:YES];
[vc release];
我会建议从你的tableviewcontroller打开loginViewController的另一种方法。通过这种方式,您可以检查用户是否已经登录到viewDidLoad中,并且如果不通过presentModalViewController显示loginViewController。你可以创建一个协议并在tableViewController上实现它,loginViewController调用一个方法让tableviewcontroller知道用户已经登录。 – rckoenes 2011-03-16 10:45:44
因此,一个伟大的方式做到这将注册在应用程序委托的通知,然后把它当用户在得到loged并再次在应用程序委托中更改视图?或者是否有可能直接从loginViewController在应用程序委托中运行方法? – tobros91 2011-03-16 10:40:22
@tobros:在我的回答 – meronix 2011-03-16 10:54:08
中看到我的新编辑,谢谢你做到了! – tobros91 2011-03-16 11:39:13