Пользовательский интерфейс не обновляется в 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