在tableView中的页脚内部按钮上执行某些操作

时间:2016-02-16 01:52:34

标签: xcode swift

我有一个tableView,它有一个标题,一个页脚和一个用于动态目的的原型单元格。我在页脚中有一个Sign Out按钮,但无法弄清楚如何将其与功能相关联。我设置了一个segue回到登录页面,但我想要一个警告框首先要求确认,所以我需要以某种方式调用一个函数。

    override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let footerCell = tableView.dequeueReusableCellWithIdentifier("Footer") as! MenuTableViewCell
    footerCell.logout.targetForAction("logOutButtonClicked", withSender: self)
    return footerCell
}

这就是我现在所拥有的,但点击它会崩溃并给我

'NSInvalidArgumentException', reason: '-[.MenuTableViewCell logOutButtonClick:]: unrecognized selector sent to instance 0x7ffce28615d0'

我有一个名为logOutButtonClicked的函数,看起来像这样......

    func logOutButtonClicked(){
    let alertView = UIAlertController(title: "Log Out?", message: "Are you sure you want to Log Out?", preferredStyle: .Alert)
    alertView.addAction(UIAlertAction(title: "Cancel", style: .Default, handler: nil))
    alertView.addAction(UIAlertAction(title: "Log Out", style: .Default, handler: {(alertAction) -> Void in
        self.logOut()}))
    presentViewController(alertView, animated: true, completion: nil)
}

func logOut(){
    performSegueWithIdentifier("goHome", sender: self)
}

编辑: 我也试过footerCell.logout.addTarget(self, action: "logOutButtonClicked", forControlEvents: .TouchUpInside) ,但也会出现同样的错误。

2 个答案:

答案 0 :(得分:0)

你必须创建一个名为" logOutButtonClicked"的函数。因为你通过添加targetForAction来指定它,它看起来像这样:

Sub WorksheetFunctionDemo3()

Debug.Print WorksheetFunction. Pi(2)

End sub

}

答案 1 :(得分:0)

我设法通过删除与按钮相对应的所有事件和插座(右键单击它时找到的那些)然后重写函数来解决此问题...

override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
    let footerCell = tableView.dequeueReusableCellWithIdentifier("Footer") as! MenuTableViewCell
    footerCell.logout.addTarget(self, action: "logOutButtonClicked", forControlEvents: .TouchUpInside)
    return footerCell
}