从静态单元到动态 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的主要内容,如果未能解决你的问题,请参考以下文章