У меня есть приложение для iPhone, которое использует UINavigationController, некоторые представления таблиц и iAd.На верхнем уровне мой контроллер навигации показывает панель навигации.На более низких уровнях это не так.
Проблема, с которой я сталкиваюсь, заключается в том, что иногда рамка моего верхнего уровня UITableView опускается ниже нижней части экрана.Причина этого заключается в следующем:
мой метод viewWillAppear выглядит следующим образом:
-(void) viewWillAppear:(BOOL)animated {
[self.navigationController setNavigationBarHidden:NO animated: animated]; // changing the last animated to NO does not help.
[super viewWillAppear:animated];
}
, а мой метод viewDidLoad выглядит так:
- (void)viewDidLoad {
[self.navigationController setNavigationBarHidden:NO animated: NO];
[super viewDidLoad];
[self createTableView];
ADBannerView *abv = [[ADBannerView alloc]initWithFrame: [self initialBannerViewFrame]];
abv.delegate=self;
[self.view addSubview:abv];
self.bannerView = abv;
[self moveBannerViewOffscreen];
[abv release];
}
Наконец, moveBannerViewOffscreen выглядитнапример, это:
-(void) moveBannerViewOffscreen {
// moving it down and off
CGRect newBannerFrame = self.bannerView.frame;
CGFloat screenHeight = [[UIScreen mainScreen]bounds].size.height;
newBannerFrame.origin.y=screenHeight;
bannerView.frame = newBannerFrame;
CGRect newTableFrame = self.selectionTableView.frame;
newTableFrame.size.height = self.view.bounds.size.height;
self.selectionTableView.frame = newTableFrame;
}
Когда загружается представление, происходит то, что, хотя я назвал
[self.navigationController setNavigationBarHidden: NO animated: NO];
, кадр моего представления не сразу настраивается для учетаПанель навигации.Это все еще верно, когда выполняется moveBannerViewOffscreen.Таким образом, высота представления таблицы установлена на 480. Когда появляется панель навигации, в результате нижняя часть представления таблицы находится ниже экрана, и пользователь не может выбрать последнюю строку.
Я уверен, что я мог бы использовать NSTimer, чтобы настроить некоторые kludge, чтобы исправить это.Но есть ли чистый способ организовать мой код, чтобы проблема не возникла в первую очередь?
Спасибо