IOS 登陆判断问题

有一个登陆界面,还有一个包含多个选项卡的界面在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选项卡底部被遮盖了)
这个是什么原因呢?

简单实现方法:你的项目建立在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];
时间: 2024-10-11 09:02:58

IOS 登陆判断问题的相关文章

ios登陆页以及键盘关闭demo

1.新建一个single view 的project 2.另外新建两个类(非必要) DElabel.h DETextField.h 将共用属性以及方法都放类当中,特殊属性以及方法直接放VC中 3.声明全局变量tfuser tfpass两个textfield 4.键盘关闭关键在新建一个背景,让背景触发事件让两个textfield失去控制权. =========================== // //  DEViewController.m //  testLoginPage // // 

ios如何判断键盘是否已经显示

ios如何判断键盘是否已经显示 在群里看到有人问:ios如何判断键盘已经显示在界面上. 其实这个解决很简单: 写一个单例来管理键盘的状态. 这个单例在初始化方法init种监听2个事件,分别是 UIKeyboardDidShowNotification(键盘弹出通知)和 UIKeyboardWillHideNotification (键盘消失通知 然后在相应的方法中设置一个属性就行了. 大致的实现如下: -(id)init {     self = [super init]; if (self)

navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) 判断是不是 移动设备 'ontouchstart' in window; 判断支不支

navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) 判断是不是 移动设备 'ontouchstart' in window; 判断支不支触屏 navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) 判断是不是 移动设备 'ontouchstart' in window; 判断支不支

iOS 兼容性 判断新版本函数可用

在关于ios兼容性问题的时候,可能应用是4.0那么5.0新的函数就不能调用 : 我们可以判断该函数是否能调用来判断: if([self.navigationController.navigationBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)]) { //如果版本支持这个函数则调用 这个函数是5.0之后的用来设置navigationBar的背景图片 5.0之前不支持 [self.navigationCont

ios学习(判断版本号,判断用户是否是第一次登陆效果)

判断版本号 1.获取一个状态:是否已经进入过主界面 获取到当前的版本 NSString *key = (NSString *)kCFBundleVersionKey; NSString *version = [NSBundle mainBundle].infoDictionary[key]; 获取到之前的版本 NSString *lastVersion = [[NSUserDefaults standardUserDefaults]valueForKey:@" 1"]; 2.如果没有进

iOS 正则表达式判断手机号,邮箱等

1 #import "NSString+RegexCategory.h" 2 3 @implementation NSString (RegexCategory) 4 #pragma mark - 正则相关 5 - (BOOL)isValidateByRegex:(NSString *)regex{ 6 NSPredicate *pre = [NSPredicate predicateWithFormat:@"SELF MATCHES %@",regex]; 7 r

ios网络判断的方式

对于ios判断网络连通方式我总结了一下几种方法: 1.Reachability. Reachability是苹果推荐的用来判断当前网络状态的第三方库.Reachability使用的主要函数包括: + (Reachability*) reachabilityWithHostName: (NSString*) hostName; + (Reachability*) reachabilityWithAddress: (const struct sockaddr_in*) hostAddress; + 

iOS开发-判断一个点是否在某个区域

iOS有时候需要判断是否touch到某个图的区域中.也就是touch到的这个点是否在某个图的区域范围内. 解决问题的办法很多, 这里简单介绍一种. 我们可以通过CGPath创建一个区域,区域是由路径做两点间线段并闭合成的区域,然后就可以用CGPath相关函数CGPathContainsPoint判断点是否在区域里了. 比如这里创建了一个简单的矩形.它的frame为(4, 4, 10, 10). 四个顶点的坐标分别为(4, 4), (4, 14), (14, 14), (14, 4) 显然易得,

iOS 中判断当前设备的相机是否可用

在iOS 开发中,经常需要调用相机来扫描类似二维之类的东西,在调用之前,首先应该判断当前设备的相机是否可用: 下面直接上代码:(swift中的写法) 1 class WNCommonTool: NSObject { 2 /** 3 4 判断当前设备的相机是否可用 5 6 :returns: 当前设备的相机是否可用 7 8 */ 9 10 class func isCameraAvailable() -> Bool{ 11 12 return UIImagePickerController.isC