2012-09-22 14 views
12

5 tane tab alanım var. Birincisi giriş sayfası olacak. Kullanıcı diğer sekme yarasa öğelerine giriş yapmadığında devre dışı bırakılır, ancak kullanıcı navigationItem düğmesini tıklatarak oturum açtığında, diğer 4 sekme çubuğu öğeleri etkinleştirilir. Ben yaptıkSekme çubuğu öğesini bir düğmeyle etkinleştir ve devre dışı bırak xcode'a tıklayın.

aradı ve hiçbir şey ... :(

İşte

kodum var bulundu: şimdi benim kod yalnızca diğer 4 sekme çubuğu öğeleri devre dışı İçin

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; 

    } 
} 

ama yolu bilmiyorum kullanıcı giriş yaptığında tüm sekme yarasa öğeleri etkinleştirmek için

Lütfen yardım

Teşekkür:.?! D

cevap

40

iOS gelişiminde yeni başladığımı söylemek zorundayım. Size yardımcı olabileceğimi düşünüyorum.

Sizlerde Storyboard'u bir TabBarController ve diğer tüm UIViewController yapın. Onları TabBarController'a bağlayın ve bunlara atama sınıfları ekleyin.

[[[[self.tabBarController tabBar]items]objectAtIndex:1]setEnabled:FALSE]; 
[[[[self.tabBarController tabBar]items]objectAtIndex:2]setEnabled:FALSE]; 
[[[[self.tabBarController tabBar]items]objectAtIndex:3]setEnabled:FALSE]; 

Ve yine bunları etkinleştirebilirsiniz: uygulama LoginViewController ilk sekme olmalıdır başlayan bir basitçe sekmeleri devre dışı bırakmak için bu kodu eklerken durumda UIViewController biri LoginViewController.Now adı verilecek:

[[[[self.tabBarController tabBar]items]objectAtIndex:1]setEnabled:TRUE]; 
[[[[self.tabBarController tabBar]items]objectAtIndex:2]setEnabled:TRUE]; 
[[[[self.tabBarController tabBar]items]objectAtIndex:3]setEnabled:TRUE]; 

Yani LoginAction fonksiyonu şu şekilde görünecektir:

- (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; 
    } 
} 

Ben yardımcı umut: D

+0

! Üzgünüm sadece bir tane vereceğim !! –

+0

Teşekkürler @GabrielMolter! Bir an için kızardım;) – RonzyFonzy

+0

Sekme çubuğu simgeleri, etkin duruma bağlı olarak görünümü değiştiriyor mu? Eğer öyleyse lütfen bir ekran görüntüsü ekleyin! – fatuhoku

2

Ben sekme çubuğu öğeleri N numarası ile çalışmak için @RonzyFonzy gelen çözüm güncelleme: bunun gibi çok iyi bir cevap vererek kimseyi görmedim

for (UITabBarItem *tmpTabBarItem in [[self.tabBarController tabBar] items]) 
      [tmpTabBarItem setEnabled:NO]; 
İlgili konular