Ios 在swift的UITableViewController中,自定义委托始终为零

Ios 在swift的UITableViewController中,自定义委托始终为零,ios,xcode,swift,delegates,protocols,Ios,Xcode,Swift,Delegates,Protocols,我正在尝试在我的项目中实现自定义委托。在我的情况下,代表总是零我不知道我做错了什么 我有表视图控制器,我使用自定义单元格。自定义单元格几乎没有标签。我正在为其中一个标签添加点击手势。当用户点击标签时,弹出控制器打开,当用户选择项目时,然后从该视图控制器委派返回标签值,此操作由委派负责 我在目标C中实现了同样的东西,它工作得很好,但在swift中,我的代表总是零。请帮帮我 这是我的密码 ABCTableViewController.swift var cell = UITableV

我正在尝试在我的项目中实现自定义委托。在我的情况下,代表总是零我不知道我做错了什么

我有表视图控制器,我使用自定义单元格。自定义单元格几乎没有标签。我正在为其中一个标签添加点击手势。当用户点击标签时,弹出控制器打开,当用户选择项目时,然后从该视图控制器委派返回标签值,此操作由委派负责

我在目标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
    }
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)
    }
}
斯威夫特实验室

{
    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

        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
    }
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始终为零


谢谢

也许我错过了什么。您可以在
recog()
方法中设置代理。但是你把这个
recog()
方法称为哪里呢?我的错。它被添加到UIAPTgestureRecognitizer中。您有一个名为recog的变量,它是您的UIAPTgestureRecognitizer,然后您有一个recog()函数,您可以在其中分配委托,但我看不到您在任何地方调用该方法。这难道不是问题吗?recog是UITapGestureRecognitor的实例,我正在设置并委派一些操作。好的,我开始了解您现在要去哪里:-)。好的…那就回到调试上来。如果在
someAction()
方法中放置一个断点,当您标记
brandNameLabel
时,是否可以看到它被调用?