Three20 - 纵向模式下的拆分视图控制器

Posted

技术标签:

【中文标题】Three20 - 纵向模式下的拆分视图控制器【英文标题】:Three20 - TTSplitViewController in portrait mode 【发布时间】:2011-08-15 13:56:30 【问题描述】:

我正在 iPad 上运行 Three20 示例中的 TTCatalog 项目(不对其进行修改)。

我注意到,当应用程序处于纵向模式时,我无法通过单击左上角的 Bar 按钮项显示的 Pop over 更改“详细信息”视图控制器(或 rightNavigator)内容。

如果我将设备旋转到横向,我可以选择任何leftNavigator 项目并在rightNavigator 上查看它们的对应内容。

如何使用TTSplitViewController在纵向上达到同样的效果?

谢谢

更新

此问题仅在使用 ios 5.0 时出现,在 iOS 4.3 上运行即可。

【问题讨论】:

【参考方案1】:

我昨天遇到了同样的问题。

我在 TTBaseNavigator.m 中写了一条到 three20 主干的路径,将 navigatorForView:view 替换为以下内容

+ (TTBaseNavigator*)navigatorForView:(UIView*)view 
  // If this is called with a UIBarButtonItem, we can't traverse a view hierarchy to find the
  // navigator, return the global navigator as a fallback.
  if (![view isKindOfClass:[UIView class]]) 
    return [TTBaseNavigator globalNavigator];
  

  id<TTNavigatorRootContainer>  container = nil;
  UIViewController*             controller = nil;      // The iterator.
  UIViewController*             pcontroller = nil;      // The iterator.
  UIViewController*             childController = nil; // The last iterated controller.

  for (controller = view.viewController;
       nil != controller;
       controller = controller.parentViewController) 
    for (pcontroller = controller;
         nil != pcontroller;
         pcontroller = pcontroller.splitViewController) 
      if ([pcontroller conformsToProtocol:@protocol(TTNavigatorRootContainer)]) 
        container = (id<TTNavigatorRootContainer>)pcontroller;
        break;
      
    
    if ([controller conformsToProtocol:@protocol(TTNavigatorRootContainer)]) 
      container = (id<TTNavigatorRootContainer>)controller;
      break;
    

    childController = controller;
  

  TTBaseNavigator* navigator = [container getNavigatorForController:childController];
  if (nil == navigator) 
    navigator = [TTBaseNavigator globalNavigator];
  

  return navigator;

今天早上我在 github 上发现了一个 pull request 正在修复它。我觉得它比我的好。你可以在这里找到它:https://github.com/facebook/three20/pull/746

希望有帮助

【讨论】:

以上是关于Three20 - 纵向模式下的拆分视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

UISplitViewController 中的 ActionSheet 在纵向模式与横向模式下的行为不同

iPad 纵向模式下的拆分视图 - 弹出按钮标题

iPhone 6 Plus 上的拆分视图控制器旋转

在拆分视图中更改主视图不会更新纵向弹出框

测试给定的 iPhone 是不是支持展开模式下的拆分视图

拆分视图控制器错误?