我目前有登录/注册按钮使用分段控件。我试图使用按钮登录来使用handleLogin函数,并使用registerRegister函数注册按钮。我目前试图以这种方式调用这些函数,但没有运气。 我的代码如下:
@IBAction func indexChanged(_ sender: UISegmentedControl) {
switch loginRegisterSegmentedControl.selectedSegmentIndex {
case 0:
nameTextField.isHidden = true
universityTextField.isHidden = true
universityDropDown.isHidden = true
loginRegisterButton.setTitle("Login", for: UIControlState())
loginRegisterButton.addTarget(self, action: #selector(handleLogin), for: .touchUpInside)
case 1:
universityTextField.isHidden = false
nameTextField.isHidden = false
loginRegisterButton.setTitle("Register", for: UIControlState())
loginRegisterButton.addTarget(self, action: #selector(handleRegister), for: .touchUpInside)
default:
break;
}
}
答案 0 :(得分:1)
首先,您可以根据selectedIndex
的{{1}}编写单独的功能来更改界面。此外,您只需要一个UISegmentedControl
来执行特定操作。因此,在添加目标之前,您需要删除其他所有目标。否则,在按下Target
时,您将获得多项操作。
loginRegisterButton
在func changeInterfaceAccoringto(_ index:Int){
/*Remove all targets before add*/
loginRegisterButton.removeTarget(nil, action: nil, for: .allEvents)
switch index {
case 0:
nameTextField.isHidden = true
universityTextField.isHidden = true
universityDropDown.isHidden = true
loginRegisterButton.setTitle("Login", for: UIControlState())
loginRegisterButton.addTarget(self, action: #selector(handleLogin), for: .touchUpInside)
case 1:
universityTextField.isHidden = false
nameTextField.isHidden = false
loginRegisterButton.setTitle("Register", for: UIControlState())
loginRegisterButton.addTarget(self, action: #selector(handleRegister), for: .touchUpInside)
default:
break;
}
}
致电changeInterfaceAccoringto
,如下所示,
indexChanged
要在理想情况下更改界面,您需要在方法@IBAction func indexChanged(_ sender: UISegmentedControl) {
changeInterfaceAccoringto(loginRegisterSegmentedControl.selectedSegmentIndex)
}
中调用changeInterfaceAccoringto
,如下所示,
viewDidLoad
让我知道你需要吗?