如果用户在 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
}
}
}
希望这会实现你的目标。
我在隐藏的单元格 (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
}
}
}
希望这会实现你的目标。