我试图设置侧边菜单的样式,我希望UISwitch
编辑旁边的标签。但是,当我点击开关时发生的唯一想法是应用程序崩溃,我收到以下错误消息
2016-08-20 01:56:20.545 Moppio [4342:8394913] - [Moppio.BackTableViewController test()]:无法识别的选择器发送到实例0x7fe66a4ba530 2016-08-20 01:56:20.554 Moppio [4342:8394913] *由于未捕获的异常终止应用程序' NSInvalidArgumentException',原因:' - [Moppio.BackTableViewController test()] :无法识别的选择器发送到实例0x7fe66a4ba530' * 首先抛出调用堆栈:...
这就是我现在使用的code
。
//Profile picture + bar
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?{
let view = UIView(frame: CGRectMake(0, 0, tableView.bounds.size.width, 60))
view.backgroundColor = UIColor(red:0.40, green:0.40, blue:0.40, alpha:1.0)
let profileImageView = UIImageView(frame: CGRectMake(20, 5, 50, 50)) // Change frame size according to you...
profileImageView.image = UIImage(named: "profile.png") //Image set your
view.addSubview(profileImageView)
let LabelStatus = UILabel(frame: CGRectMake(0, 0, 200, 21))
LabelStatus.center = CGPointMake(120, 32)
LabelStatus.textColor = UIColor(red:0.95, green:0.95, blue:0.95, alpha:1.0)
LabelStatus.font = UIFont(name: "BebasNeue", size: 24)
LabelStatus.textAlignment = NSTextAlignment.Center
self.view.addSubview(LabelStatus)
let switchStatus=UISwitch(frame:CGRectMake(195, 15, 20, 20))
func test() {
if (switchStatus.on == true){
LabelStatus.text = ("Available")
print("on")
}
if (switchStatus.on == false){
LabelStatus.text = ("Not available")
LabelStatus.center = CGPointMake(130, 32)
print("off")
}
}
switchStatus.on = true
switchStatus.setOn(true, animated: false);
switchStatus.addTarget(self, action: "test()", forControlEvents: UIControlEvents.ValueChanged)
switchStatus.onTintColor = UIColor(red:0.95, green:0.95, blue:0.95, alpha:1.0)
switchStatus.thumbTintColor = UIColor(red:0.25, green:0.25, blue:0.25, alpha:1.0)
self.view.addSubview(switchStatus);
return view
}
这就是它目前的样子like。
如何让开关编辑旁边的标签?
答案 0 :(得分:1)
您正在获得无法识别的选择器'错误,因为您错误地定位了test
函数。
在这一行
switchStatus.addTarget(self, action: "test()", forControlEvents: UIControlEvents.ValueChanged)
您正试图在test
上找到一个功能self
,但test
是表格视图中的viewForHeaderInSection
功能,而不是一个功能self
。
此外,选择器语法已从String更改为新的#selector
语法。
要解决此问题,请将test
函数移至self
上的函数。您还需要能够引用switchStatus
和LabelStatus
个对象,这样您就可以将它们移动到视图控制器的成员中。
所以最后你应该得到这样的东西:
class BackTableViewController: UITableViewController {
let LabelStatus = UILabel()
let switchStatus = UISwitch()
func test() {
// update the label here
}
override func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?{
// ...
switchStatus.addTarget(self, action: #selector(BackTableViewController.test), forControlEvents: UIControlEvents.ValueChanged)
// ...
}
}
答案 1 :(得分:0)
更改该行代码,选择器的语法不正确:
switchStatus.addTarget(self, action: #selector(BackTableViewController.test), forControlEvents: UIControlEvents.ValueChanged)