我有一个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");
}
}
答案 0 :(得分:2)
这段代码中有一些奇怪的东西:
你的cellForRowAtIndexPath应该返回一个单元格(你可能已经完成了这个,并且没有将它复制到你的stackoverflow问题中)
您正在使用storyboard或xib生成UISwitch,因为您说'故事板上的开关已突出显示' - 但您也在代码中实例化这些! 例如
@IBOutlet var swUser: UISwitch! = UISwitch();
但我相信你的问题最终与你的IBAction'SwitchUser'有关。您可以在某个时刻重命名此方法,或者先创建一个IBAction,然后将其删除。要检查IBActions的当前状态,请单击storyboard或xib中的单元格,然后打开Connections Inspector。我打赌你会在那里找到你的问题。
答案 1 :(得分:0)