Модальный контроллер uiview с xib не будет отображать скрытые элементы управления - PullRequest
0 голосов
/ 14 июля 2011

У меня есть простой 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];


}

Я, вероятно, здесь упускаю что-то очевидное !!!

Ответы [ 2 ]

0 голосов
/ 14 июля 2011

ты @синтезировал этикетки? если нет, я думаю, что вы должны использовать [loadingLabel setHidden: YES];

0 голосов
/ 14 июля 2011

Обратите внимание, что альтернативным способом настройки видимости является установка альфа-метки (и других элементов на экране) в 1 (видимый) или в 0 (невидимый). Это может сработать.

например,

self.loadingLabel.alpha = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...