gpt4 book ai didi

ios - 从 TableView 单元格到另一个 View Controller 的 Segue 转换仅在任意时间有效 - 为什么?

转载 作者:行者123 更新时间:2023-11-29 12:52:48 25 4
gpt4 key购买 nike

我使用三个 View Controller ,并在每个 View Controller 上放置了 UITableViewUITableViewCell。当我从 Storyboard中的第一个 View Controller 的 TableView 单元连接到另一个 View Controller 并运行模拟器时,segue 按预期工作。但是,当我以与第一个完全相同的方式从 Storyboard中的第二个 View Controller 的 TableView 单元格连接到最后一个 View Controller 时,由于某些原因,转换不起作用。

如果我定义 didSelectRowAtIndexPath: 并在其中调用 [self performSegueWithIdentifier:@"showDetail"sender:self]; 在第二个 View Controller 的实现文件中,转换可以按预期工作。我不关心是 Storyboard转场还是我的代码中定义的方法来执行过渡,只要过渡正常工作即可。

不过,我还是想知道为什么会出现这样的不一致。正如我所说,我在两种情况下都以完全相同的方式连接了两个 Storyboard,并检查了属性检查器和连接检查器,但我没有发现这两个连接之间有任何区别。

此外,虽然第一个 View Controller 可以在没有定义方法的情况下执行转换,但当我定义它时,转换不起作用,并发出以下错误消息:

在意外状态下完成导航转换。导航栏 subview 树可能会损坏。

我想我不能同时使用这两种方法(即 Storyboard转场和方法调用)——我只是想知道是什么导致了这里的不一致。

我使用 iOS 7 和 Xcode 5。

最佳答案

首先,如果您使用推送 segue,如果第一个 segue 是模态的(除非您将第二个 VC 嵌入导航 Controller ),则无法推送第二个 segue。

其次,确保 de segue 标识符对于每个 segue 都是唯一的。

如果你在 storyboard 中 ctrl+drag 一个 segue,不要在代码中调用 performsegue,你只是尝试做同样的操作两次。如果 segue 在 Storyboard中,在代码中你应该使用 prepareforsegue 委托(delegate)。

另一种方法是不在 Storyboard中使用任何 segue,然后在代码中@didselectrowatindexpath 您可以使用 [storyboard instantiateviewcontrolerwithidentifier...] 实例化您的目标 vc >,然后 [self.navigationcontroller pushviewcontroller..] 用于推送 segue 或 [self presentviewcontroller...] 用于模态。

编辑:此外,当您按住 ctrl 并拖动时,请确保您是从单元格中拖动而不是从表格中拖动。

关于ios - 从 TableView 单元格到另一个 View Controller 的 Segue 转换仅在任意时间有效 - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22011206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com