开发者社区> 问答> 正文

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

最近刚学习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选项卡底部被遮盖了)
这个是什么原因呢,有人碰到过没

展开
收起
a123456678 2016-07-19 15:59:20 2241 0
1 条回答
写回答
取消 提交回答
  • 简单实现方法:你的项目建立在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的尺寸是320480,而默认建立的singleview项目,是有statusBar的20像素存在,这样,viewController的尺寸是320460,而在这个的基础上addSubview的尺寸(320*480)大于本身,自然按照左上角对齐,就导致向下偏移20像素。

    当然你也可以在AppDelegate的

    • (BOOL)application:(UIApplication )application didFinishLaunchingWithOptions:(NSDictionary )launchOptions
      中加上

    [[UIApplication sharedApplication] setStatusBarHidden:YES];
    解决偏移的问题。

    2019-07-17 19:58:29
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
手淘iOS性能优化探索 立即下载
From Java/Android to Swift iOS 立即下载
深入剖析iOS性能优化 立即下载