ios - 像在 TableView 行上一样,在节标题上分开 segue

标签 ios swift uitableview segue sections

我有一个表格 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")
        }
    }

最佳答案

好的,我不是在写代码,只是你需要遵循的步骤

  1. 从行和标题中删除您创建的转场。只需为要打开的 Controller 分配 SegueIdentifier,比如 SegueIdentifierForRowSegueIdentifierForSection

  2. 由于 tableview header 中没有操作,您需要添加自定义操作,可以是 UIButtonUITapGestureRecognizer。您可以保留原样的单元格选择。要确定部分选择,您可以为每个部分设置 tag

  3. 在 Row CellSelection 上使用标识符 SegueIdentifierForRow 手动初始化 ViewController,对于使用不同标识符 SegueIdentifierForSection 的部分也是如此。

按照上面的操作,您应该能够执行所需的操作。

干杯。

关于ios - 像在 TableView 行上一样,在节标题上分开 segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32903847/

相关文章:

ios - 改变 UITableViewCell 高度的自定义动画

ios - IBOutlets 和内存管理

ios - CollectionView 滚动更改选定的单元格

ios - 从 Swift 中的另一个 View Controller 访问 TableView 单元格信息

uitableview - 如何更改 View 中每个 UIButton 的框架

swift - 使 UITableViewCell 着色为特定百分比

objective-c - 更改 View 在 viewDidLoad 中有效,但在单击 IBAction 按钮时无效

ios - 带有iOS 10.3的iPhone 5和iPad第四代在NSPredicate崩溃

xcode - 从自定义单元格中调用 TableViewController 中的方法

android - Flex 4.5.1 和 iOS、Android 开发