自定义委托在swift中的UITableViewController中始终为nil

时间:2015-06-29 02:58:25

标签: ios xcode swift delegates protocols

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

我有表视图控制器,我正在使用自定义单元格。自定义单元格标签很少。我正在为其中一个标签添加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。

由于

0 个答案:

没有答案