我正在使用带有自适应选择的通用故事板来构建我的界面。我有一个作为主视图控制器UISplitViewController
的UITableViewController
集合。我正在使用此表显示两种不同类型的信息,因此,当用户点击一个单元格时,我需要弄清楚他们点击了哪个单元格,以便显示适合于所选单元格的两个不同视图控制器之一。我已在Storyboard中设置了关系,以使详细信息视图控制器成为两个视图控制器中的第一个,这很好,因为无论如何我都会将UI渲染为顶部,直到他们点击一个单元格为止。我发现我可以创建一个从表视图控制器到我的其他视图控制器的序列,当点击适当的单元格时应显示该序列-这是“显示详细信息(例如,替换)”序列。我给它一个标识符,我简单地打电话[self performSegueWithIdentifier:ReplaceDetailSegueIdentifier sender:self];
当一个适当的行被选择以继续前进,在与正确的视图控制器的细节替换现有的视图控制器。当我选择一个应该显示第二个视图控制器的单元格时,这非常有用。它将第二个视图控制器适当地替换了第一个细节视图控制器。因此,然后我设置了另一个segue,将在用户点击应显示原始第一个视图控制器的行时执行。但是,发生这种情况时,应用程序会在执行segue的行崩溃(但没有任何信息记录到控制台-仅显示EXC_BAD_ACCESS)。
因此,似乎您一次执行了一次Show detail segue后,随后的调用以替换detail view controller会使应用程序崩溃。如果我选择用第二个视图控制器替换原始详细信息控制器的行,然后选择应该显示相同的第二个视图控制器的另一行,则应用程序崩溃,这也是正确的。
我将如何设置它,以便根据他们选择的单元格正确显示适当的详细信息视图控制器,以确保应用程序不会崩溃?
我发现崩溃是由于取消分配了详细信息视图控制器()导致的UISplitViewControllerDelegate
,因此主服务器正在引用不存在的对象。解决方案是将委托设置为将要显示的新视图控制器(如果不符合,则为nil UISplitViewControllerDelegate
)。现在,它可以正常工作了。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句