我有一个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)
,但也会出现同样的错误。
答案 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
}