【问题标题】:UINavigationController corruption on iPad+Master Detail + TabBariPad + Master Detail + TabBar 上的 UINavigationController 损坏
【发布时间】:2014-03-27 22:56:11
【问题描述】:

我遇到了这个烦人的问题,并且已经进行了广泛的搜索。我认为有太多相关的术语会影响我的搜索。所以这里是:

我在 iPad 上有一个主从应用程序。主视图控制器是一个标签栏控制器。每个选项卡都是一个导航控制器,其中包含相关的根控制器。像这样:

问题是当我在一个选项卡式导航控制器上推送另一个控制器时,导航堆栈变得混乱。导航栏会更新,但实际内容或控制器不会。如果我玩得够多,它还会因 “开始/结束外观转换的不平衡调用”而崩溃

该问题仅在 iPad 以纵向模式启动时发生。如果它从横向开始,则一切正常。有时在两者之间交替会修复它,有时会导致不平衡崩溃。

希望我列出了足够的信息以寻求帮助,但我无法确定确切的问题,这使得这个问题有点难问。

编辑:

我正在像这样推动视图控制器:

[self performSegueWithIdentifier: @"pushMyControllerSegue" sender: self];

pushMyControllerSegue 定义为 style=pushdestination=current

不管它的价值是什么,这是我的prepareForSegue

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([segue.identifier isEqualToString:@"pushMyControllerSegue"]) {
        MyController *myController = segue.destinationViewController;
        myController.delegate = self;
    }
}

【问题讨论】:

  • 你是怎么推的(在哪里,显示代码)?
  • 感谢@Wain,更新问题
  • 除了 segue 中的 push 之外,您是否也在使用 push with a button。?如果是这样,请删除它,因为这种类型的错误大多数时候发生在调用两个推送调用时。一般来说,与同时推送两个视图控制器或尝试同时推送同一个视图的两种方法相关的错误。还要检查故事板中的 segue。
  • 没有任何重复的推送。重新安装了相关的segue,还是不行

标签: ios uinavigationcontroller master-detail corruption ipad


【解决方案1】:

好吧,最终用“创可贴”解决了这个问题 - 即没有找到根本原因,但做了一些修改以使其工作。

从调试中很多我相当肯定这与大师在纵向模式下的消失有关。正如我之前提到的,切换到不同的选项卡并返回到原来的选项卡可以解决问题。所以我尝试以编程方式执行此操作。如果我在选项卡控制器切换回原始选项卡之前打开母版 - 它可以解决问题。如果我打开它之后它切换回来问题仍然存在。

(切换回来我使用performSelector:withDelay,从而确保来回切换标签实际上是切换标签,并且不会被标签栏控制器的内部优化取消。它还允许我在切换完成时玩)

所以我做了什么(如果这对任何人有帮助的话) - 在下面的委托方法上

- (void)splitViewController:(UISplitViewController *)svc popoverController:(UIPopoverController *)pc willPresentViewController:(UIViewController *)aViewController

我切换回所选标签。不需要performSelector:withDelay

可能是 Apple 方面的错误 - 不确定...无论如何我希望这对某人有所帮助。

【讨论】:

    【解决方案2】:

    故事板中的转场似乎有些问题。在情节提要中为您的视图控制器提供标识符,并尝试使用以下代码而不是 segues 来推送视图控制器:

    MyController *vc= (MyController*)[self.storyboard instantiateViewControllerWithIdentifier: @"YOUR_VIEWCONTROLLER_IDENTFIER"];
    vc.delegate=self;
    [self.navigationController pushViewController:vc animated:YES];
    

    【讨论】:

      猜你喜欢
      • 2013-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 2013-10-31
      • 2014-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多