Я просто перед показом Лидборда нахожу сабвью с нулевым индексом и делаю его верхним. Это всегда оказывается свежедобавленый сабвью, что нам и нужно.
Как то так:
- (IBAction)showLeaderboard
{
GKLeaderboardViewController *lb = [[GKLeaderboardViewController alloc] init];
if (lb != nil) {
lb.leaderboardDelegate = self;
[self presentModalViewController:lb animated: NO];
NSArray * subviews = [[[UIApplication sharedApplication] keyWindow] subviews];
UIView * vLayer= [subviews objectAtIndex: 0];
vLayer.hidden=false;
[[[UIApplication sharedApplication] keyWindow] bringSubviewToFront: vLayer];
}
}