2013-04-29 5 views
-2

LoginController tente une tentative de connexion simple - si elle réussit, elle appelle setEmail dans leftcontroller. Tout ce que je dois faire quand setEmail est appelé est de cacher le btnLogin et montrer le buttonUser et rien que j'essaie fonctionne. Les NSLog s sont appelées et les charges EventsController fonctionnent donc - cela ne fonctionne pas et ne masque pas les boutons.Impossible de masquer UIButton créé par programme?

leftcontroller.h:

@interface LeftController : UIViewController <UIApplicationDelegate> 
{ 
    IBOutlet UIButton *btnLogin; 
    IBOutlet UIButton *buttonUser; 
    NSString *setEmail; 
} 
@property (nonatomic,strong) IBOutlet UIButton *btnLogin; 
@property (nonatomic,strong) IBOutlet UIButton *buttonUser; 

@property(nonatomic,strong) UITableView *tableView; 
@property(nonatomic) NSString *Email; 

//-(void) setEmail : (NSString *) Email; 

@end 

leftcontroller.m:

- (void) setEmail : (NSString *) Email{ 
    [buttonUser setTitle:Email forState:UIControlStateNormal]; 
    //btnLogin.hidden = YES; 
    //buttonUser.hidden = NO; 
    [btnLogin setHidden:YES]; 
    [buttonUser setHidden:NO]; 

    NSLog(@"Set Email Called"); 
    NSLog(@"email: %@", Email); 

    DDMenuController *menuController = (DDMenuController*)((AppDelegate*)[[UIApplication sharedApplication] delegate]).menuController; 
    EventsViewController *controller = [[EventsViewController alloc] init]; 
    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller]; 

     [menuController setRootController:navController animated:YES]; 
} 

-(void)viewDidLoad { 
    [super viewDidLoad]; 

    self.view.backgroundColor = HEXCOLOR(0x000000); 

    btnLogin = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    btnLogin.frame = CGRectMake(0, 0, 180.f, 48); 
    [btnLogin setTitle:@"Login" forState:UIControlStateNormal]; 
    [btnLogin addTarget:self action:@selector(LoginPressed) 
     forControlEvents:UIControlEventTouchUpInside]; 
    btnLogin.tag=1; 

    btnLogin.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
    [btnLogin setTitleColor: [UIColor whiteColor] forState:UIControlStateNormal]; 
    btnLogin.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0); 

    UIImage *btnImage = [UIImage imageNamed:@"nav_top.png"]; 
    [btnLogin setBackgroundImage:btnImage forState:UIControlStateNormal]; 
    [self.view addSubview:btnLogin]; 

    buttonUser = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
    buttonUser.frame = CGRectMake(0, 0, 180.f, 48); 
    //[buttonUser setTitle:_Email forState:UIControlStateNormal]; 
    [buttonUser addTarget:self action:@selector(EmailPressed) 
     forControlEvents:UIControlEventTouchUpInside]; 
    buttonUser.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft; 
    [buttonUser setTitleColor: [UIColor whiteColor] forState:UIControlStateNormal]; 
    buttonUser.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0); 

    UIImage *btnImage1 = [UIImage imageNamed:@"nav_top.png"]; 
    [buttonUser setBackgroundImage:btnImage1 forState:UIControlStateNormal]; 
    [self.view addSubview:buttonUser]; 
    buttonUser.hidden = YES; 
} 
+0

Le bouton est-il une sortie définie dans votre XIB ou cette variable dans le code ou les deux? – Wain

+0

pas xib - Je ne pensais pas que j'avais besoin de l'IBOutlet - juste essayé différentes choses pour essayer de le faire fonctionner – lsiunsuex

+0

http://stackoverflow.com/questions/4498400/cant-programmatically-hide-uibutton-created-with -ib? rq = 1 – matt

Répondre

4

Cette ligne est suspect:

btnLogin = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 
// ... 
[self.view addSubview:btnLogin]; 

Si vous créez btnLogin et l'ajouter à self.view vous, dans le code, puis pourquoi est-ce un n sortie?

@property (nonatomic,strong) IBOutlet UIButton *btnLogin; 

Une sortie est pour quelque chose qui déjà existe et est instancié dans votre nib. Par conséquent, il me semble que vous pourriez avoir deux objets, l'un d'entre eux effaçant votre référence à l'autre. Et la même chose pour l'autre bouton.

0

Vous n'êtes pas réglant les propriétés, remplacez:

btnLogin = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

avec:

self.btnLogin = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 

Et définir votre propriété comme:

@property (nonatomic,strong) UIButton *btnLogin; 

Faites la même chose pour buttonUser.

+2

Pourquoi marquer la propriété comme un 'IBOutlet' si le bouton est créé dans le code? – rmaddy

+0

Mon mauvais je voulais dire qu'il ne devrait pas être marqué comme une sortie, mais j'ai oublié d'enlever cela, merci d'avoir attrapé. –

0

Après avoir réglé le hidden de vos boutons, vous immédiatement dire

[menuController setRootController:navController animated:YES];} 

Cela suggère que vous modifiez l'interface. Mais si vous changez l'interface, pouvez-vous vraiment dire si vos boutons ont changé? Je ne sais pas ce que vous faites ici, mais vos boutons ne sont peut-être plus dans l'interface. Peut-être que ce que vous voyez dans l'interface sont différents ensemble de boutons.

+0

Le contrôleur gauche (où se trouvent les boutons) est à part de https://github.com/devindoty/DDMenuController - un bouton de la barre de navigation sort le menu, cliquez sur login (puis sur login) et charge le contrôleur d'événements - à gauche le contrôleur n'est jamais déchargé - il se cache juste – lsiunsuex

+0

Les boutons sont dans le contrôleur de gauche. Si le contrôleur gauche se cache, comment savez-vous que les boutons ne changent pas? Vous ne pouvez plus les voir. – matt

+0

Pensez à l'application facebook ios - le menu se retire en cliquant sur le bouton de la barre de navigation - donc après avoir cliqué sur la connexion, j'ai de nouveau appuyé sur ce bouton et le bouton de connexion n'est pas masqué – lsiunsuex

Questions connexes