当我弹回到上一个视图控制器时,iOS 5上的pushNavigationController把我的UINavigatio



我的主视图控制器只支持landscapeleft和landscaperight。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%。我在MainViewController:的viewDidLoad中创建了它

// 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];    

这在iOS4中不会发生,因为我创建了一个UIToolBar并将其作为我的右BarButtonItem。现在我正在尝试使用rightBarButtonItems iOS 5方法,我遇到了这个问题。有什么想法吗?谢谢

编辑:如果我在不旋转iPad的情况下打开MainVC,也不会发生这种情况。只有当我旋转时才会发生这种情况。

是否设置了自动调整大小的掩码,以便工具栏知道调整大小?我想如果它在没有其他MVC的情况下旋转得很好的话。

我也遇到过类似的问题,尤其是确保我的主VC在不在屏幕上时正确旋转。我不确定我的解决方案是否很棒,但它有效。当从另一个视图返回时,我会检查我的边界是否更改,如果是,请清除我的视图(枚举子视图和removeFromSuperview),然后再次加载它们。基本上,将viewDidLoad中的所有内容都保留在另一个方法中,并从viewWillAppear调用它。这幅画画得非常快,所以你甚至不会在屏幕上注意到它。

不优雅,所以我会观察是否有人有更好的解决方案。

祝你好运,

Damien

最新更新