Пользовательский интерфейс не обновляется в SWRevealViewController viewWillAppear

В настоящее время я использую SWRevealController для моей слайд-навигации. У меня проблема в том, что мой ярлык не обновляется должным образом в зависимости от изменений через бэкэнд. Я полагал, что он будет обновляться новыми данными каждый раз, когда меню выдвигается, учитывая мой код в контроллере представления левой навигационной системы (меню):

-(void)viewWillAppear:(BOOL)animated
{
 [super viewWillAppear:animated];
 PFUser *currentUser = [PFUser currentUser];
int currency = [[currentUser objectForKey:@"currency"] intValue];


    // Adding Image to ImageView
    PFFile *image = (PFFile *)[currentUser objectForKey:@"image"];
    [image getDataInBackgroundWithBlock:^(NSData *data, NSError *error){
        if (error)
        {
            self.profileImage.image = [UIImage imageNamed:@"imagePlaceHolder"];

        }
        else
        {
            UIImage *userImage = [UIImage imageWithData:data];
            self.profileImage.image = userImage;
        }
    }];

    self.userCurrency.text = [NSString stringWithFormat:@"%d hBux earned.", currency ];
    self.greetingMessage.text = [NSString stringWithFormat:@"Hello, %@!", [currentUser objectForKey:@"username"]];


}

Я делаю что-то неправильно? Конечно, он не может войти в viewDidLoad, поскольку, насколько я понимаю, он вызывается только один раз, когда инициализируется?

2 ответа

В каждом контроллере представления, где вы хотите иметь боковое меню (в библиотеке SWRevealViewController он вызывает 'Front View Controller')) .m файл в методе viewDidLoad добавляет строку self.revealViewController.delegate = selfи добавьте следующие строки в конце

#pragma mark - SWRevealViewController Delegate

- (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position
{
    if (position == FrontViewPositionRight) {
       // do all the changes you did in viewWillAppear here
    }
}

также не забудьте добавить SWRevealViewControllerDelegate в.h файл вашего viewController:

@interface YourViewController : UIViewController<SWRevealViewControllerDelegate>

Добавьте ` self.revealViewController.delegate = self; в вашем методе ViewController.m didLoad.

Добавлять,

- (void)revealController:(SWRevealViewController *)revealController willMoveToPosition:(FrontViewPosition)position

{

 if (position == FrontViewPositionRight) {
    NSLog(@"When Slide Menu is Pushed");
}

if (position == FrontViewPositionLeft) {
    NSLog(@"When Slide is Popped out");   
}

}

добавлять @interface FirstViewController : UIViewController< SWRevealViewControllerDelegate > in your ViewController.h

Другие вопросы по тегам