pushNavigationController на iOS 5 испортил мой UINavigationBar, когда я возвращаюсь к предыдущему контроллеру представления - PullRequest
0 голосов
/ 28 февраля 2012

Мой контроллер основного вида поддерживает только ландшафтный ландшафт и ландшафтный дизайн. Этот view-контроллер в viewDidLoad имеет:

if ([self.navigationItem respondsToSelector:@selector(leftItemsSupplementBackButton)]) {
    self.navigationItem.leftItemsSupplementBackButton = YES;
    self.navigationItem.leftBarButtonItem = homeBBI;

    NSArray *rightNavItems = [NSArray arrayWithObjects:searchBBI, allBBI, nil];
    self.navigationItem.rightBarButtonItems = rightNavItems;
}

Когда я помещаю свой ReportViewController в стек, он выглядит нормально. Этот контроллер также поддерживает только альбомную ориентацию.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return UIInterfaceOrientationIsLandscape(interfaceOrientation);
}

Когда я поворачиваю iPad на 180 градусов, все выглядит нормально. Однако, когда я захожу в контроллер основного вида, UINavigationBar запутывается. Он в основном содержит все предметы, включая заголовок, сжатый слева. Панель поиска у меня в итоге заняла 75% панели навигации. Я создал это так в viewDidLoad моего MainViewController:

// Search Bar
    UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0, 0, 150, 44)];
    self.SearchEntry = searchBar;
    self.SearchEntry.delegate = self;
    UISearchDisplayController *searchDisplayCtlr = [[UISearchDisplayController alloc] initWithSearchBar:_searchEntry contentsController:self];
    self.SearchController = searchDisplayCtlr;
    searchDisplayCtlr.searchResultsDataSource = self;
    searchDisplayCtlr.searchResultsDelegate = self;
    UIBarButtonItem *searchBBI = [[UIBarButtonItem alloc] initWithCustomView:_searchEntry];    

Этого не происходит в iOS 4, так как я создаю UIToolBar и ставлю его как rightBarButtonItem. Теперь, когда я пытаюсь использовать метод RightBarButtonItems для iOS 5, я получил эту проблему. Какие-нибудь мысли? Благодаря.

Редактировать: этого также не произойдет, если я зайду в свой MainVC, не поворачивая iPad. Это происходит только если я вращаюсь.

1 Ответ

0 голосов
/ 28 февраля 2012

Вы установили маски автоматического изменения размера, чтобы панель инструментов знала, как изменить размер?Я думаю, что если он вращается нормально, без другого MVC сверху.

У меня были похожие проблемы с этим, в частности, обеспечение правильного вращения моего основного VC, когда его нет на экране.Я не уверен, что мое решение хорошо, но оно работает.Возвращаясь из другого представления, я проверяю, изменились ли мои границы, и если да, очищаю свое представление (перечисляем подпредставления и removeFromSuperview), затем загружаю их все снова.По сути, храните все, что у вас есть в viewDidLoad, в другом методе и вызывайте его из viewWillAppear.Рисование очень быстрое, поэтому вы даже не заметите его на экране.

Не элегантно, поэтому я буду наблюдать, есть ли у кого-нибудь лучшее решение.

Удачи,

Дэмиен

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...