我正在尝试在我的项目中实现自定义委托。在我的情况下,代表总是零,我不知道我在这里做错了什么?
我有表视图控制器,我正在使用自定义单元格。自定义单元格标签很少。我正在为其中一个标签添加Tap手势。当用户点击标签时,弹出控制器打开,当用户选择项目时,从该视图控制器委托返回标签的值,此操作由委托负责。
我在Objective C中实现了相同的功能,它工作正常,但在swift中,我的委托总是为零。请帮帮我。
这是我的代码
ABCTableViewController.swift
var cell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier:"cell" as String)
cell = tableView.dequeueReusableCellWithIdentifier("cell1", forIndexPath: indexPath) as! UITableViewCell
let popover = self.storyboard!.instantiateViewControllerWithIdentifier("dropdown") as! DropDownViewController
(cell as! labelCell).popOverTableVC = popover
}
LabelCell.swift
{
self.label.userInteractionEnabled = true
var recog = UITapGestureRecognizer(target: self, action: "someAction")
self.brandNameLabel .addGestureRecognizer(recog)
}
func someAction()
{
self.popOverTableVC.delegate = self
}
// Delegate implementation
func selectedItem (item: NSString)
{
self.label.text = item as String
self.popOver .dismissPopoverAnimated(true)
}
DropDownViewController.swift
protocol DropDownViewControllerDelegate: class
{
func selectedItem (item: NSString)
}
weak var delegate: DropDownViewControllerDelegate? = nil
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var selectedItem: NSString = "Hello From Delegate"
if (self.delegate != nil)
{
self.delegate?.selectedItem(selectedItem)
}
}
在didSelectRowAtIndexPath中,self.delegate始终为nil。
由于