У меня есть простой UIViewcontroller с XIB.Я представляю это модально, и он отображается правильно. У меня есть три элемента управления на XIB, которые я хочу скрыть, пока пользователь не нажмет кнопку ОК, а затем отобразить, когда приложение подключается к удаленному серверу, а затем скрыть себя, когда оно будет завершено.Я правильно подключил их к IBOutlets.Моя проблема в том, что когда вызывается метод IBAction, к которому подключена кнопка OK, установка для скрытого свойства NO, не делает их видимыми.Вот код:
#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
На представлении, загруженном, я вызываю hideLoadingIndicators, чтобы установить для свойства hidden значение 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];
}
Это работает нормально, но когда я вызываю showLoadingIndicators вметод onClickSend, где он устанавливает скрытый для NO, тогда элементы управления не отображаются.Это определенно вызывает этот метод.
-(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];
}
Я, вероятно, здесь упускаю что-то очевидное !!!