2011-07-14 11 views
0

xibを持つシンプルなUIViewcontrollerがあります。私はこれをモーダルで提示し、正しく表示します。ユーザーがOKボタンを押してからアプリケーションがリモートサーバーに接続しているときに表示し、終了したら自分自身を隠すまで、非表示にしたいxibの3つのコントロールがあります。私はそれらをIBOutletsに正しく接続しました。私の問題は、[OK]ボタンが接続されているIBActionメソッドが呼び出されたときに、隠しプロパティをNOに設定しても表示されないということです。ここでは、コードは次のとおりです。xib付きモーダルコントロールは隠しコントロールを表示しません

#import <UIKit/UIKit.h> 
#import "PasswordWebViewController.h" 

    @interface ExistingUserController : UIViewController<UITextFieldDelegate> { 
     UITextField *emailField; 
     UITextField *passwordField; 
     NSString *password; 
     NSString *email; 
     UIActivityIndicatorView *spinner; 
     UIImageView *loadingImg; 
      UILabel *loadingLabel; 
} 
@property (nonatomic, retain) IBOutlet UITextField *emailField; 
@property (nonatomic, retain) IBOutlet UITextField *passwordField; 
@property (nonatomic, retain) NSString *email; 
@property (nonatomic, retain) NSString *password; 
@property (nonatomic, retain) IBOutlet UIActivityIndicatorView *spinner; 
@property (nonatomic, retain) IBOutlet UILabel *loadingLabel; 
@property (nonatomic, retain) IBOutlet UIImageView *loadingImg; 
-(IBAction) onClickSend: (id) sender; 
-(IBAction) onClickCancel: (id) sender; 
-(IBAction) onClickResetPW: (id) sender; 
-(void)showLoadingIndicators; 
-(void)hideLoadingIndicators; 
@end 

ビューへの負荷が私は私がどこonClickSend方法でshowLoadingIndicatorsを呼び出したときにこれが正常に動作しますが、YES

- (void)viewDidLoad 
{ 

    [super viewDidLoad]; 
    [self hideLoadingIndicators]; 
    [[NSNotificationCenter defaultCenter] addObserver:self 
              selector:@selector(stopSpinner:) 
               name:@"StopSpinnerOnExistingUserController" 
               object:nil]; 

    // Do any additional setup after loading the view from its nib. 
} 

-(void)hideLoadingIndicators{ 
    loadingLabel.hidden = YES; 
    loadingImg.hidden = YES; 
    [spinner stopAnimating]; 
} 

にプロパティに隠さ設定するhideLoadingIndicatorsを呼びました非表示に設定されていればコントロールは表示されません。これは間違いなくこのメソッドを呼び出します。

-(IBAction) onClickSend: (id) sender{ 
    if ([email length] >0 && [password length] >0){ 
     UIApplication *myApp = [UIApplication sharedApplication]; 
     [self showLoadingIndicators]; 
     noIBAppDelegate*appDelegate = (noIBAppDelegate*)myApp.delegate; 
     [appDelegate tryLoadingUserEmail:email AndPassword:password]; 

    }  
    else{ 
     UIAlertView *missingAlert = [[[UIAlertView alloc] initWithTitle:@"Error" message:@"You have a blank email or password." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil] autorelease]; 
     [missingAlert show]; 
    } 
} 

-(void)showLoadingIndicators{ 


    self.loadingImg.hidden =NO; 
    [self.view bringSubviewToFront:loadingImg]; 
    self.loadingLabel.hidden = NO; 
    [self.view bringSubviewToFront:loadingLabel]; 
    [self.spinner startAnimating]; 


} 

私はおそらくここで何かが分かりません!

+0

'hideLoadingIndicators'が機能していることをどのように知っていますか?これらのコントロールがデフォルトで隠されていないと確信していますか? –

+0

xibのコントロールの隠しプロパティをチェックしていますが、hideLoadingIndicatorsメソッドを呼び出さないと、それらが表示されます。 –

+0

'email'と' password'はどうやって設定していますか?メソッドが呼び出されていると言います。 'showLoadingIndicators'や' onClickSend: 'を参照していましたか? –

答えて

0

可視性を設定する別の方法は、ラベル(およびその他のオンスクリーンアイテム)のアルファベットを1(可視)または0(不可視)に設定することです。これは機能するかもしれません。

例えば

self.loadingLabel.alpha = 0; 
+0

実際に私は私自身のアプリで自分自身を使っていました。 –

0

はあなたがラベルを@synthesizeたのですか?そうでない場合は、[loadLabel setHidden:YES]を使用する必要があります。

+0

はいこれらはすべて合成されています。 –

関連する問題