按下时 Segue 不会显示 ViewController

Posted

技术标签:

【中文标题】按下时 Segue 不会显示 ViewController【英文标题】:Segue won't show the ViewController when pressed 【发布时间】:2017-02-11 02:47:47 【问题描述】:

我目前有一个ViewController,在UITable View 中有原型单元cells 当前在加载时显示来自 Firebase 数据库 的内容。我想做的是,当按下cell 时,Firebase DB 会显示更多信息。但是,我目前无法将seguecell 推送ViewController。我应该怎么做才能奏效?

我的故事板图片--

【问题讨论】:

您得到的确切错误是什么? @TusharSharma 我没有收到任何错误,就是这样。我真的不知道如何调试这个问题。 您是否推送了您的视图控制器,其中您有一个带有导航控制器的表格视图。?? codingexplorer.com/segue-uitableviewcell-taps-swift。检查此网址 【参考方案1】:

这两段代码会有所帮助。快速:

@IBAction func showEntries(_ sender: Any) 
    self.performSegue(withIdentifier: <sequeId>, sender: nil)

还有一个包含此操作的按钮。

对于 Objective C,您可以像这样执行 segue。

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

通过CTRL创建动作并将按钮或单元格拖动到相应的代码文件中,选择动作并命名。

【讨论】:

添加按钮在视觉上看起来并不令人愉悦,因为 Firebase 内容会在按钮出现在屏幕上大约 2 秒后加载。 Opate 按钮是一个选项,上面的答案看起来可以通过选择行来工作。【参考方案2】:

很难说,但从截图来看,segue 似乎是从控制器到控制器,而不是从单元到控制器。如果您想这样做,那么您需要为 segue 提供一个标识符(在屏幕截图的右侧面板中),然后覆盖委托方法

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) 
    performSegue(withIdentifier: "yourIdentifier", sender: self)

或者(如果您不想遇到所有这些麻烦)...在故事板中,将 segue 从 cell 拖动到要推送的视图控制器,而不是从控制器到控制器。

例如,

注意如何选择SEGUE时,只有单元格中的蓝色,而不是整个视图控制器。

【讨论】:

谢谢,但是选择单元格本身也不起作用,添加您的代码不会改变以前的任何内容。 嗯...这可能是一个愚蠢的问题,但单元格是可选择的吗? (包括确保情节提要中单元格的“选择”选项未设置为“无”。)并且正确设置了单元格的重用标识符? 另外,我刚刚注意到 segue 类型是显示细节。你在 iPhone 上吗?显示详细信息旨在用于拆分视图控制器(“在拆分视图的详细信息窗格中显示此视图”)。如果您只想将视图控制器推送到导航堆栈上,则类型应为“显示(例如推送)”。 再次感谢您的帮助,因为我尝试了这两种方法,但没有任何效果。有什么我可以提供的可以帮助解决这个问题吗? 您能提供表格视图控制器类的代码吗?如果没有,我明白。故事板中的其他所有内容在我看来都不错。【参考方案3】:

这是因为单元格是动态的,所以您不能将单元格中的事件处理程序分配给 uiviewcontroller。相反,您应该在 cellForRowAtIndexPath 方法中进行 segue 并从那里推送它。如果你仍然想在 storyboard 中看到 segue,那么你也可以 ctrl+从 viewcontroller1 拖动到 viewcontroller2 来创建一个新的 segue。然后选择 segue 并给它一个 Storyboard id。之后您可以拨打self.performSegue(withIdentifier: "yourIdentifier")

【讨论】:

我在你所说的地方设置了 segue 和代码,但是一旦单元加载,ViewController 就会加载。当我按回来时,我被带回牢房,无法再次按。【参考方案4】:

我实际上找到了解决方案。这个问题其实很简单。我所要做的就是将表格视图属性中的选择设置从“无选择”更改为“单选”。

【讨论】:

以上是关于按下时 Segue 不会显示 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

按下时购物车计数器不更新值,没有显示错误

如何在nib文件中按下时禁用UIButton高亮显示?

按下时如何使 UIButton 收缩为 UIActivityIndi​​cator?

PyQt5 QPushButton setSyleSheet 按下时不改变按钮颜色

为啥我的 UIButton 在按下时有时不会立即做出反应?

IOS:按下时不要改变颜色UIButton