自定义UITableViewCell中的UISwitch上的IBAction导致错误

时间:2014-10-30 23:18:18

标签: ios swift

我有一个UITableViewController和一个自定义TableViewCell,在UITableViewCell中有一个UISwitch。此开关连接到IBAction,但是一旦我点击开关,我就会收到一个错误:

 unrecognised selector sent to instance 0x13ce30a50

SelectFriendsViewController.swift

class SelectFriendsViewController: UITableViewController, SelectorDelegate {
    func selectUser(string: String) {
        selectedUser = string;
    }

    .... lots of code removed for simplification.

    override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

        let cell:SelectorTableViewCell = tableView!.dequeueReusableCellWithIdentifier("MyCell", forIndexPath: indexPath) as SelectorTableViewCell;

        cell.delegate = self;
    }

}

protocol SelectorDelegate {
    func selectUser(string: String)
}

class SelectorTableViewCell: UITableViewCell {

    @IBOutlet var swUser: UISwitch! = UISwitch();
    @IBOutlet var lblUserName: UILabel! = UILabel();

    var delegate: SelectorDelegate!

    @IBAction func SwitchUser(sender: UISwitch) {
        //delegate.selectUser("test");
        //even with just this println i get the error
        println("test");
    }

}

2 个答案:

答案 0 :(得分:2)

这段代码中有一些奇怪的东西:

  1. 你的cellForRowAtIndexPath应该返回一个单元格(你可能已经完成了这个,并且没有将它复制到你的stackoverflow问题中)

  2. 您正在使用storyboard或xib生成UISwitch,因为您说'故事板上的开关已突出显示' - 但您也在代码中实例化这些! 例如

    @IBOutlet var swUser: UISwitch! = UISwitch();
    
  3. 但我相信你的问题最终与你的IBAction'SwitchUser'有关。您可以在某个时刻重命名此方法,或者先创建一个IBAction,然后将其删除。要检查IBActions的当前状态,请单击storyboard或xib中的单元格,然后打开Connections Inspector。我打赌你会在那里找到你的问题。

答案 1 :(得分:0)