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];
}
私はおそらくここで何かが分かりません!
'hideLoadingIndicators'が機能していることをどのように知っていますか?これらのコントロールがデフォルトで隠されていないと確信していますか? –
xibのコントロールの隠しプロパティをチェックしていますが、hideLoadingIndicatorsメソッドを呼び出さないと、それらが表示されます。 –
'email'と' password'はどうやって設定していますか?メソッドが呼び出されていると言います。 'showLoadingIndicators'や' onClickSend: 'を参照していましたか? –