0

現在、スライド アウト ナビゲーションに SWRevealController を使用しています。私が抱えている問題は、バックエンド経由の変更に基づいてラベルが適切に更新されていないことです。leftnavigation (メニュー) ビュー コントローラーのコードを考慮して、メニューがスライド アウトするたびに新しいデータで更新されると考えました。

-(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に入れることはできませんか?

4

2 に答える 2

2

サイドバー メニューを表示するすべてのビュー コントローラーで (SWRvealViewController ライブラリでは「Front View Controller」を呼び出します)、viewDidLoad メソッドの .m ファイルに行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
    }
}

また、viewController の .h ファイルに SWRevealViewControllerDelegate を追加することを忘れないでください。

@interface YourViewController : UIViewController<SWRevealViewControllerDelegate>
于 2014-11-09T12:40:40.913 に答える
0

` 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

于 2014-11-20T08:35:57.930 に答える