14 xcode tabbar uitabbarcontroller uiviewcontroller uitabbar
我有5个标签栏项目.第一个是登录页面.当用户未登录其他选项卡时,将禁用蝙蝠项目,但是当用户通过单击navigationItem按钮进行登录时,将启用所有其他4个选项卡蝙蝠项目.
我已经搜索过,发现什么...... :(
这是我的代码:
MainTabViewController.h
#import <UIKit/UIKit.h>
@interface MainTabViewController : UITabBarController
@property (retain, nonatomic) IBOutlet UITabBar *MainTabBar;
@end
MainTabViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
UITabBarItem *tabBarItem = [[MainTabBar items] objectAtIndex:1];
[tabBarItem setEnabled:FALSE];
}
LoginViewController.h
#import <UIKit/UIKit.h>
@interface LoginViewController : UIViewController
@property (retain, nonatomic) IBOutlet UITextField *CustomerUsername;
@property (retain, nonatomic) IBOutlet UITextField *CustomerPassword;
- (IBAction)ResignKeyboardClicked:(id)sender;
@end
LoginViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
UIBarButtonItem *btnGo = [[UIBarButtonItem alloc] initWithTitle:@"Login" style:UIBarButtonItemStyleBordered target:self action:@selector(loginAction)];
self.navigationItem.rightBarButtonItem = btnGo;
}
- (void) LoginAction {
AppDelegate *passData = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if ([CustomerUsername.text isEqualToString:@""] || [CustomerPassword.text isEqualToString:@""]) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"alert" message:@"Please Fill all the field" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
return;
}
// i will use a code from connect to DB tutorial
NSString *strURL = [NSString stringWithFormat:@"http://localhost:8888/Staff.php?userName=%@&password=%@",CustomerUsername.text, CustomerPassword.text];
// to execute php code
NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];
// to receive the returend value
NSString *strResult = [[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding];
if ([strResult isEqualToString:@"1"])
{
//MainTabViewController *main = [[MainTabViewController alloc] initWithNibName:nil bundle:nil];
//UITabBarItem *tabBarItem = [[main.MainTabBar items] objectAtIndex:1];
//[tabBarItem setEnabled:TRUE];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Success" message:@"You are now Logged In" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
return;
}
else
{
// invalid information
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"alert" message:@"Invalide Information" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
return;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我的代码只禁用其他4个标签栏项,但我不知道在用户登录时启用所有标签栏项的方法.
请帮忙?
谢谢!:d
小智 41
我不得不说我是iOS开发的初学者,我想我可以帮到你.
在你的Storyboard中创建一个TabBarController和所有其他UIViewController.将它们链接到TabBarController并向它们添加assign类.在您的情况下,其中一个UIViewController将被称为LoginViewController.Now当您的应用程序启动时,LoginViewController必须是第一个选项卡,您只需添加此代码即可禁用选项卡:
[[[[self.tabBarController tabBar]items]objectAtIndex:1]setEnabled:FALSE];
[[[[self.tabBarController tabBar]items]objectAtIndex:2]setEnabled:FALSE];
[[[[self.tabBarController tabBar]items]objectAtIndex:3]setEnabled:FALSE];
Run Code Online (Sandbox Code Playgroud)
您可以再次启用它们:
[[[[self.tabBarController tabBar]items]objectAtIndex:1]setEnabled:TRUE];
[[[[self.tabBarController tabBar]items]objectAtIndex:2]setEnabled:TRUE];
[[[[self.tabBarController tabBar]items]objectAtIndex:3]setEnabled:TRUE];
Run Code Online (Sandbox Code Playgroud)
所以你的LoginAction函数看起来像这样:
- (void) LoginAction {
AppDelegate *passData = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if ([CustomerUsername.text isEqualToString:@""] || [CustomerPassword.text isEqualToString:@""]) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"alert" message:@"Please Fill all the field" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
return;
}
// i will use a code from connect to DB tutorial
NSString *strURL = [NSString stringWithFormat:@"http://localhost:8888/Staff.php?userName=%@&password=%@",CustomerUsername.text, CustomerPassword.text];
// to execute php code
NSData *dataURL = [NSData dataWithContentsOfURL:[NSURL URLWithString:strURL]];
// to receive the returend value
NSString *strResult = [[NSString alloc] initWithData:dataURL encoding:NSUTF8StringEncoding];
if ([strResult isEqualToString:@"1"]) {
//MainTabViewController *main = [[MainTabViewController alloc] initWithNibName:nil bundle:nil];
//UITabBarItem *tabBarItem = [[main.MainTabBar items] objectAtIndex:1];
//[tabBarItem setEnabled:TRUE];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Success" message:@"You are now Logged In" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
[[[[self.tabBarController tabBar]items]objectAtIndex:1]setEnabled:TRUE];
[[[[self.tabBarController tabBar]items]objectAtIndex:2]setEnabled:TRUE];
[[[[self.tabBarController tabBar]items]objectAtIndex:3]setEnabled:TRUE];
return;
}
else {
// invalid information
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"alert" message:@"Invalide Information" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[alert show];
return;
}
}
Run Code Online (Sandbox Code Playgroud)
我希望它有所帮助:D
| 归档时间: |
|
| 查看次数: |
21291 次 |
| 最近记录: |