您好,匿名用户
随意问技术百科期待您的加入

IOS中登陆界面如何跳转到含tabbar的界面

0 投票

最近刚学习IOS,现有一个登陆界面,还有一个包含多个选项卡的界面
在点击登陆界面的登陆按钮时跳转至含tabbar的界面,我该怎么实现了?

希望有人能给出思路,如果有关键代码最好了

根据楼下给出的第二种思路 在ViewController.m中登陆按钮的代码如下

UIViewController *controller=[[Tabbarcontroller alloc]init];
[self presentModalViewController:controller animated:YES];

在TabbarController.h中

@property(strong,nonatomic) UITabBarController *controller;

然后是在TabbarController.m中的

@synthesize controller;

-(id) initWithNibName(NSString *)nibNameOrNil bundle:(NSBundle *)nibBoundleOrNil
{
    self=[super initWithNibName:nibNameOrNil bundle:nibBoundleOrNil];
    UIViewController *first=[[First alloc]initWithNibName:@"First" bunlde:nil];
    UIViewController *second=[[Second alloc]initWithNibName:@"Second" bunlde:nil];
    controller=[[UITabBarController alloc]init];
    controller.viewControllers=[NSArray arrayWithObjects:first,second,nil];
    [self.view addSubView:controller.view];
    if(self){

    }
    return self;
}

效果出来了 但是tabbar感觉是整体下移了一些位置(头部有一些空白,tabbar选项卡底部被遮盖了)
这个是什么原因呢,有人碰到过没

用户头像 提问 2012年 12月1日 @ Ezreal 上等兵 (266 威望)
分享到:

1个回答

0 投票
 
最佳答案

简单实现方法:你的项目建立在tabbarcontroller的基础上。
在appdelegate的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

方法中,使用

[self.tabBarController presentModalViewController:loginNC animated:NO];

这样,你打开程序,首先显示的登陆页面,点击登陆,在登陆的事件中加上下述代码

[self dismissModalViewControllerAnimated:YES];

这样就实现了你想要的效果。

稍微麻烦点的方法:你的项目建立在singleview的基础上(单一viewController)。再写一个otherTabBarController,

UIViewController *vc1 = [[[UIViewController alloc] init] autorelease];
vc1.view.backgroundColor = [UIColor redColor];

UIViewController *vc2 = [[[UIViewController alloc] init] autorelease];
vc2.view.backgroundColor = [UIColor blueColor];

[self setViewControllers:[NSArray arrayWithObjects:vc1,vc2, nil]];

点击登陆就使用

[viewController presentModalViewController:otherTabBarController animated:YES];

otherTabBarController要继承自UITabBarController,这样就没有底部挡住的问题。

最初我给的答案是使用继承自UIViewController的方法。
不过我觉得这样写的代码层次会有些冗余。不如直接继承自UITabbarController作为容器。

用系统的tabbarcontroller会挡住,至于原因因为系统的这套TabBarController.view的尺寸是320*480,而默认建立的singleview项目,是有statusBar的20像素存在,这样,viewController的尺寸是320*460,而在这个的基础上addSubview的尺寸(320*480)大于本身,自然按照左上角对齐,就导致向下偏移20像素。

当然你也可以在AppDelegate的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

中加上

[[UIApplication sharedApplication] setStatusBarHidden:YES];

解决偏移的问题。

用户头像 回复 2012年 12月1日 @ Pantheon 上等兵 (388 威望)
选中 2012年 12月1日 @Ezreal
提一个问题:

相关问题

0 投票
1 回复 112 阅读
0 投票
1 回复 48 阅读
用户头像 提问 2012年 12月1日 @ Lux 上等兵 (267 威望)
0 投票
1 回复 115 阅读
+1 投票
1 回复 72 阅读
+1 投票
1 回复 416 阅读
用户头像 提问 2012年 12月1日 @ Poseidon 上等兵 (188 威望)

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...