【发布时间】:2016-07-23 11:38:52
【问题描述】:
我想在 Swift 中的 TableviewCell 上添加一个按钮,以弹出一个小的自定义视图(覆盖当前视图),其中包含一些在线信息。
我为“弹出视图”创建了另一个(ViewController + 自定义视图并调整了它的大小。
在tableviewcell类中,在Button.AddTarget(..)相关函数中,我调用了PresentViewController(..)。
我有这些问题:
- 弹出视图出现在屏幕顶部,因为我为其设置了固定的 X,Y Gfloat。我希望弹出窗口出现在每个按钮的正下方。
如何在TableviewCell的屏幕窗口中获取按钮(或触摸位置)的X,Y坐标?
- 在TableviewCell中,当我点击按钮(不是单元格)时,如何推送特定值(id_item)来请求数据?
我搜索过,但大多数相关答案都是关于 TableviewController 而不是 TableviewCell。
================================================ =========
我试过了:
import UIKit
import QorumLogs
class TabelViewSearchStockCell: UITableViewCell, UIViewControllerTransitioningDelegate {
@IBOutlet weak var mainImageView: UIImageView!
@IBOutlet weak var productCodeLabel: UILabel!
@IBOutlet weak var titleLabel: UILabel!
@IBOutlet weak var stockButton: UIButton!
@IBOutlet weak var view: UIView!
var cellType:String?
var searchCell: SearchResult?
{
didSet{
// 1. set image
if let imageId = searchCell?.id_img{
let urlCovertor = GetImgUrl()
let urlStr = urlCovertor.getSmall(imageId)
let url = NSURL(string: urlStr)
mainImageView.sd_setImageWithURL(url)
}
// 2. set_title
titleLabel.text = searchCell?.title
// 3. set product code
productCodeLabel.text = searchCell?.productcode
// 4. set price area
stockButton.addTarget(self, action: #selector(TabelViewSearchStockCell.checkStock), forControlEvents: .TouchUpInside)
}
}
// MARK: - set location
private lazy var animatorManager: PresentationManager = {
let buttonRect = self.stockButton.superview?.convertRect(self.stockButton.frame, toView: self.view)
let manager = PresentationManager()
manager.presentFrame = buttonRect!
return manager
}()
}
// MARK:- Listen button
extension TabelViewSearchStockCell{
@objc private func checkStock(){
// create menu
let sb = UIStoryboard(name: "Popover",bundle: nil)
guard let menuView = sb.instantiateInitialViewController() else{
return
}
menuView.transitioningDelegate = animatorManager
menuView.modalPresentationStyle = UIModalPresentationStyle.Custom
self.window?.rootViewController?.presentViewController(menuView, animated: true, completion: nil)
}
}
它仍然总是出现在C1中
我希望当我单击位置 S1 中的按钮时,它会在位置 C2 而不是 C1 中显示“弹出窗口”。这意味着,弹出视图将始终显示在我单击的按钮下方。
【问题讨论】:
-
请分享您的尝试
标签: ios swift uitableview uibutton