-3

LoginController単純なログイン試行を試みます。成功した場合は、 を呼び出しsetEmailますleftcontroller

setEmailが呼び出されたときに行う必要があるのは、 を非表示にしてbtnLoginを表示することbuttonUserだけで、何も試してもうまくいきません。NSLogが呼び出され、ロードEventsControllerが機能しているためsetEmail、ボタンの非表示と表示は行われません。

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

3 に答える 3

4

この行は疑わしいです:

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

コードで作成btnLoginして自分に追加している場合、なぜそれがアウトレットなのですか?self.view

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

アウトレットは、すでに存在し、nibでインスタンス化されているもの用です。したがって、2 つのオブジェクトがあり、そのうちの 1 つが他のオブジェクトへの参照を消去しているように思えbtnLoginます。他のボタンも同様です。

于 2013-04-29T16:50:10.523 に答える
0

あなたのボタンの設定後hidden、あなたはすぐに言っています

[menuController setRootController:navController animated:YES];} 

これは、インターフェイスを変更していることを示しています。しかし、インターフェイスを変更する場合、ボタンが変更されたかどうか本当にわかりますか? ここで何をしているのかわかりませんが、ボタンがインターフェイスに表示されなくなっている可能性があります。おそらく、インターフェイスに表示されているのは、のボタンのセットです。

于 2013-04-29T17:11:32.630 に答える
0

プロパティを設定していません。以下を置き換えてください。

btnLogin = [UIButton buttonWithType:UIButtonTypeRoundedRect];

と:

self.btnLogin = [UIButton buttonWithType:UIButtonTypeRoundedRect];

プロパティを次のように定義します。

@property (nonatomic,strong) UIButton *btnLogin;

についても同じことを行いbuttonUserます。

于 2013-04-29T16:52:18.053 に答える