从静态单元到动态 TableViewController

Posted

技术标签:

【中文标题】从静态单元到动态 TableViewController【英文标题】:Segue from Static Cells to Dynamic TableViewController 【发布时间】:2016-04-26 16:23:10 【问题描述】:

我有一个 TableViewController,组内有静态单元格。我想从一些静态单元格中执行 segue,但也想知道哪个单元格触发了 segued TableViewController 中的 segue。

我 ctrl + 从每个单元格拖动到目标 TVC,添加 segue 标识符并为 TVC 创建一个类。

我采用这种方法,但 segue 不起作用。它也不打印XOX

class MainTableViewController 

  viewDidLoad() 
     tableView.delegate = self
     tableView.dataSource = self
  

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) 
      print("XOX")
      if segue.identifier == "MainToA"         
        if let destination = segue.destinationViewController as? DetailTableViewController 
                destination.page = "A"
        
      

     if segue.identifier == "MainToB"         
       if let destination = segue.destinationViewController as? DetailTableViewController 
               destination.page = "B"
       
     
  

class DetailTableViewController 

    var page = String()

    viewDidLoad() 
         print(page)
    

我是错过了什么还是完全偏离了轨道?为什么转场不起作用?

【问题讨论】:

【参考方案1】:

我试过了,segues 在连接到单个 UITableViewCell 时可以正常工作

您可以在图像中看到触发的转场部分

请确保您已连接单元格中的 segue,而不是其中的任何子视图。

编辑

从聊天中看来,您有一个UITapGesture,它占据了视图的一部分。 为了避免这种情况,我建议删除TapGesture 并使用tableView didSelectRow 方法来检测视图上的触摸

【讨论】:

对我来说也完全一样。我给了单元格 segue,并添加了 segue 标识符。当我单击 segue 时,单元格会突出显示,选择也与您的屏幕截图相同。您是否在 MainVC 中添加了任何内容?我的怎么了? 尝试加入聊天chat.***.com/rooms/26424/iosandroidchaosoverflow【参考方案2】:

你有继承 UITableViewController 吗?您是否在 Interface Builder 中分配了该子类?你确定不实现覆盖函数numberOfSectionsInTableView(tableView: UITableView) -> Int 以便您的静态单元格实际出现?

当您按 ctrl+拖动时,您是否通过选择而不是辅助操作链接触发的 Segue?

【讨论】:

子类化是什么意思?我不使用 numberOfSectionsInTableView 并且我的静态单元格出现了。当我 ctrl+拖动时,它是选择,当我单击单元格时,在连接检查器下它是选择。另外,我把标识符给了segue..还有什么问题? 您的 MainTableViewController 类必须是 UITableViewController 的子类。所以你的类定义应该看起来像 'class MainTableViewController:: UITableViewController ' 完成之后,你需要在界面生成器中点击你的 UITableViewController 对象并将它的类从 UITableViewController 更改为 MainTableViewController。您需要阅读有关可可子类化的信息。 是的,我做到了。表视图工作正常。单元格被填充并从 ViewController 获取/修改数据。只是转场不起作用【参考方案3】:

尝试在您的表格视图静态内容

中启用 Selection 属性

属性检查器,如图here。

【讨论】:

以上是关于从静态单元到动态 TableViewController的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 在动态环境中创建静态单元格

动态更改静态表格视图单元格高度

在静态表格视图(单元格)中实现动态表格

在动态 UITableView 单元格的索引 0 处创建静态“添加”单元格

静态和动态单元格的 UITableView 混合?

动态更改静态单元格上的节标题文本