У меня есть приложение для iPhone, которое использует UINavigationController, некоторые виды таблиц и iAd. На верхнем уровне мой навигационный контроллер показывает навигационную панель. На более низких уровнях это не так.iPhone - код структурирования во избежание состояния гонки
Проблема, с которой я сталкиваюсь, заключается в том, что иногда рама моего верхнего уровня 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, чтобы исправить это. Но есть ли простой способ организовать мой код, чтобы проблема не возникла в первую очередь?
Благодаря
Появляется, чтобы решить эту проблему, хотя в безопасности я создал BOOL для отслеживания того, как предполагается, знамя, чтобы быть видимым, и направлен мой баннерные представления появляются/исчезают с помощью метода, который проверял значение этого BOOL. Но главное. , , в то время, когда вызывается showShowViewContoller, размер представления был скорректирован для учета панели навигации. Благодарю. –