如果用户在 swift 中执行 segue,我将如何取消隐藏按钮?

How would I unhide a button if user performs segue in swift?

我在隐藏的单元格 (PFQueryTableViewController) 中有一个按钮,当用户执行我以编程方式调用的某个 segue 时,我想取消隐藏它。

当用户点击单元格时,它会转到一个视图控制器,该视图控制器会全屏显示单元格的内容...我希望在调用 segue 时取消隐藏此单元格中的按钮,这样当用户返回到他们可以在刚点击的单元格上看到的 table 个单元格。

我该怎么做?

提问后编辑:

在 cellRowForIndexPath 中,我有以下按钮

cell.myButton.tag = indexPath.row
    cell.myButton.addTarget(self, action: "pressed:", forControlEvents: UIControlEvents.TouchUpInside)
    cell.myButton.hidden = true

并且 segue 本身将信息从单元格(存储在 Parse 后端)从 AllPostsTableViewController 传送到 FullPostViewController。代码是这样的(我会在这里调用取消隐藏吗?):

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    self.performSegueWithIdentifier("showFullPost", sender: self)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "showFullPost" {
        let indexPath = self.tableView.indexPathForSelectedRow
        let fullPostVC = segue.destinationViewController as! FullPostViewController
        let object = self.objectAtIndexPath(indexPath)
        fullPostVC.post = object?.objectForKey("postContent") as? String
        let likeCount = object!.objectForKey("likedBy")!.count
        fullPostVC.likesCounted = String(likeCount)

        self.tableView.deselectRowAtIndexPath(indexPath!, animated: true)

    }
}

(彻底编辑问题后彻底编辑答案)

下面是一种可能的解决方案。


既然你提到了 table 个单元格(每个单元格都包含一个按钮;我假设 UIButton),我假设你用 UITableViewCell 个对象填充了你的 table 视图单元格;一些花哨的 subclass 到后者。在这个 class:

  • 如果您还没有,请从您的按钮创建一个 @IBOutlet 作为此 class 中的 属性。
  • 重载方法 setSelected(...) 以在选择 UITableViewCell 的情况下取消隐藏您的按钮(这将在 segue 之前)

因此,在您的 UITableViewCell 子 class 中,您应该能够按照以下方式做一些事情:

// ...TableViewCell.swift

Import UIKit

// ...

class ...TableViewCell: UITableViewCell {

    // Properties
    @IBOutlet weak var button: UIButton!
        // button contained in UITableViewCell

    // ...

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // If table cell is selected (after which segue will follow),
        // un-hide button.
        if (selected) {
            button.hidden = false
        }
    }
}

希望这会实现你的目标。