【发布时间】:2016-07-31 11:36:59
【问题描述】:
我想解决这个问题已经有一段时间了,在寻找解决方案几个小时后,我决定是时候问了。
我有一个由自定义 UITableViewCells 填充的表格视图,当前当您点击一个单元格时,它会将您带到详细视图。
在自定义单元格中有一张图片,我希望用户能够点击该图片并转到显示该图片的弹出框 VC。
我遇到的问题是在点击图像时创建转场。
在自定义单元格的文件中,我在图像上设置了一个点击手势识别器(pTap):
override func awakeFromNib() {
super.awakeFromNib()
let tap = UITapGestureRecognizer(target: self, action: #selector(PostCell.voteTapped(_:)))
let ptap = UITapGestureRecognizer(target: self, action: #selector(PostCell.imageTapped(_:)))
tap.numberOfTapsRequired = 1
ptap.numberOfTapsRequired = 1
voteImage.addGestureRecognizer(tap)
voteImage.userInteractionEnabled = true
featuredImg.addGestureRecognizer(ptap)
featuredImg.userInteractionEnabled = true
}
我在自定义单元格文件中也有一个用于水龙头的功能:
func imageTapped(sender: UIGestureRecognizer) {
print("image tapped")
}
在我的视图控制器文件中,我在索引路径处的选择行中添加了一个 segue:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let post: Post!
if inSearchMode {
post = filteredVenues[indexPath.row]
} else {
post = posts[indexPath.row]
}
print(post?.venueName)
performSegueWithIdentifier("imageTapped", sender: nil)
performSegueWithIdentifier("DetailsVC", sender: post)
}
另外,在情节提要中,我创建了一个从 VC 到我想在点击图像时显示的带有自定义单元格的 tableview 的 segue。
我已经尝试了几种不同的方法来使其工作,但没有任何运气,您在上面看到的代码是我多次尝试失败后剩下的代码。我觉得自定义单元格文件中的 tap 功能和 VC 文件中的 segue 是解决方案的一部分,所以我把它们留在里面。
任何帮助将不胜感激。谢谢!
从以下答案更新代码:
添加协议
protocol ImageSegueProtocol: class {
func imageTapped(row: Int)
}
class PostCell: UITableViewCell {
添加了 IAB 功能
@IBAction func imageTapped(sender: UIGestureRecognizer) {
guard let row = row else { return }
delegate?.imageTapped(row)
print("image tapped func")
}
在主 VC 中声明的委托
weak var delegate:postCell?
委派的德尔盖特
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
//let post = posts[indexPath.row]
if let cell = tableView.dequeueReusableCellWithIdentifier("PostCell") as? PostCell {
var img: UIImage?
var vImg: UIImage?
postCell?.delegate = self
增加了扩展功能
extension FeedVC: ImageSegueProtocol {
func imageTapped(row: Int) {
if inSearchMode == true {
let object = filteredVenues[row]
performSegueWithIdentifier("imageTapped", sender: object)
print("ext func")
} else {
let object = posts[row]
performSegueWithIdentifier("imageTapped", sender: object)
print("ext func")
}
}
【问题讨论】:
-
您是否在表格视图单元格上创建了委托?
-
嘿,冉,不,我没有
标签: ios swift uitableview xcode7 segue