iOS:有没有办法根据点击的表格视图单元格使用条件转场

Posted

技术标签:

【中文标题】iOS:有没有办法根据点击的表格视图单元格使用条件转场【英文标题】:iOS: Is there a way to use conditional segue depending on which table view cell clicked 【发布时间】:2016-07-11 03:54:44 【问题描述】:

我正在尝试创建与警报应用中日期时间选择器下方的控件类似的控件。这些控件似乎是表格视图单元格。我想要几个tableview单元格,但是当用户点击它时,单元格的segue会将它们带到点击单元格的视图控制器。

换句话说,如果用户点击警报应用程序的“重复”单元格,segue 会将用户带到“重复”视图控制器。

如果用户点击“标签”,单元格的转场将把用户带到“标签”视图控制器。

那么,有可能有这种类型的条件转场吗?

Swift 中的任何示例/链接将不胜感激。提前致谢。

【问题讨论】:

你的意思是segue而不是sequel和sequel 【参考方案1】:

在您的didSelectItemAtIndexPath 中调用不同的segue 标识符

if indexPath.row == 0 
    performSegueWithIdentifier("showPage1", sender: indexPath.row)

else if indexPath.row == 1 
    performSegueWithIdentifier("showPage2", sender: indexPath.row)

然后在你的prepareForSegue,检查条件。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
    if segue.identifier == "showPage1" 
        // do something for page 1
    
    else if segue.identifier == "showPage2" 
        // do something for page 2
    

你的 segue 应该从下图拖到目标控制器

【讨论】:

我通过按住控件、单击我的表格视图单元(原型单元)并拖动到目标视图控制器来创建我的 segue。另外,根据您的建议,在 didSelectRowAtIndexPath 中,我也在做 performSegueWithIdentifier("showPage1", sender: indexPath.row)。问题是 prepareForSegue 被击中了两次。第一次来自在故事板中创建的 Segue,其中发送者是 UITableViewCell。第二次来自 didSelectRowAtIndexPath 中的 performSegue 命令,其中 sender 是 Int。我做错了吗? 换句话说,我如何才能只让 segue 从 didSelectRowAtIndexPath 中触发。当我在情节提要中使用 Control Drag 创建它时,如何使用它的默认值来防止它被触发。 删除从单元格到目标视图控制器的拖动。现在从黄色圆圈添加到目标控制器。更新了我的答案@Pavel 所以我可以创建从源控制器到多个目标控制器的多个 segue?感谢您的帮助。 是的,应该没问题

以上是关于iOS:有没有办法根据点击的表格视图单元格使用条件转场的主要内容,如果未能解决你的问题,请参考以下文章

根据iOS中的UIWebView内容计算表格单元格高度?

如何使用自定义单元格根据按钮值加载表格视图?

在不破坏表格视图单元格点击功能的情况下关闭 iOS 键盘

如何根据集合视图中的单元格选择来控制表格视图的内容?

使用最小高度单元格自动调整表格视图

在 iOS 9.0 中开始获取 EXC_BAD_ACCESS(点击表格视图中的单元格时)