我有一个表格 View 设置,其中每一行都有自己的自定义节标题。这是通过 Storyboard中的原型(prototype)单元完成的。我在一行的点击事件上有一个 View Controller 。我通过在 Storyboard上按住 ctrl 键拖动来实现这一点。
但是,我希望我的节标题转至不同的 Controller 。我 ctrl 也从我的标题原型(prototype)单元格拖到 Storyboard 上的 View Controller 。
结果是单击该行和单击该行的标题都将我带到同一个 View Controller 。
标题似乎链接到行。有没有办法解决?我可以提供我的 segues 标识符并覆盖 prepare for seg 吗?或者是否有可能在节标题上有一个单独的点击事件作为行的其余部分?
更新: 我必须尝试按如下方式实现它:
我用 ctrl 从我的 vc 拖到 Storyboard 中的目标 vc,并给 seg 一个标识符。
在我的 viewForHeaderInSection 中,我添加了以下内容:
let tapper = UITapGestureRecognizer(target: self, action:Selector("seg"))
tapper.cancelsTouchesInView = false
headerCell.addGestureRecognizer(tapper)
return headerCell
我的 seg func 只是使用我如上所述设置的标识符执行 seg。
func seg(){
self.performSegueWithIdentifier("feedToMembersDetailed", sender: self)
}
在我的 overridePrepareForSeg 中,我检查标识符并调用适当的方法:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if (segue.identifier == "feedToMembersDetailed"){
//getting in here
getMembersContentFromRow(segue)
}
... extra conditions
}
最后我的 getMembersContentFromRow 如下所示:
func getMembersContentFromRow(segue : UIStoryboardSegue){
var membersDetailed = segue.destinationViewController as! MembersDetailedController
if let indexPath = self.feedTableView.**indexPathForSelectedRow()**{
if let selectedId = self.newsFeed?[indexPath.section].authorId{
Prefs.followedId = selectedId.toInt()!
}
println("setting postAuthorPic as \(self.newsFeed?[indexPath.section].authorPic)")
membersDetailed.postAuthorPic = self.newsFeed?[indexPath.section].authorPic
membersDetailed.postAuthorID = self.newsFeed?[indexPath.section].authorId
membersDetailed.postAuthor = self.newsFeed?[indexPath.section].author
}
else{
//getting in here. I need a method that can retrieve indexPath for me
println("could not get selected row")
}
}
最佳答案
好的,我不是在写代码,只是你需要遵循的步骤
从行和标题中删除您创建的转场。只需为要打开的 Controller 分配 SegueIdentifier,比如 SegueIdentifierForRow 和 SegueIdentifierForSection。
由于 tableview header 中没有操作,您需要添加自定义操作,可以是
UIButton
或UITapGestureRecognizer
。您可以保留原样的单元格选择。要确定部分选择,您可以为每个部分设置tag
。在 Row CellSelection 上使用标识符 SegueIdentifierForRow 手动初始化 ViewController,对于使用不同标识符 SegueIdentifierForSection 的部分也是如此。
按照上面的操作,您应该能够执行所需的操作。
干杯。
关于ios - 像在 TableView 行上一样,在节标题上分开 segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32903847/