【发布时间】:2016-01-03 17:42:18
【问题描述】:
我试图通过“shouldPerformSegueWithIdentifier”覆盖函数进行一种条件转场,它报告错误“方法没有覆盖其超类中的任何方法”并告诉我删除“覆盖”字样。当我这样做时,它会报告下一个错误:
“方法 'shouldPerformSegueWithIdentifier(:sender:)' 与 Objective-C 选择器 'shouldPerformSegueWithIdentifier:sender:' 与超类 'UIViewController' 中的方法 'shouldPerformSegueWithIdentifier(:sender:)' 冲突Objective-C 选择器”。
这是我现在的代码:
import UIKit
class ViewController: UIViewController, UITextFieldDelegate {
//MARK: Propierties
@IBOutlet weak var whateverLabel: UILabel!
@IBOutlet weak var errorMessageLabel: UILabel!
@IBOutlet weak var textFieldRandomWord: UITextField!
//MARK: Actions
@IBAction func printWhatever(sender: UIButton) {whateverLabel.text = "Whatever"
}
@IBOutlet weak var goOnButton: UIButton!
override func shouldPerformSegueWithIdentifier(identifier: String, sender: UIButton?) -> Bool {
if identifier == "firstsegue" && sender == goOnButton { // you define it in the storyboard (click on the segue, then Attributes' inspector > Identifier
if textFieldRandomWord.text == "Whatever" {
errorMessageLabel.textColor = UIColor .redColor()
errorMessageLabel.text = "*** NOPE, segue wont occur"
return false
}
else {
errorMessageLabel.text = "*** YEP, segue will occur"
}
}
// by default, transition
return true
}
override func viewDidLoad() {
super.viewDidLoad()
textFieldRandomWord.delegate = self //ViewController is textFieldRandomWord's delegate, so "self" reffers to itself (ViewController)//
}
//MARK: UITextFieldDelegate
func textFieldShouldReturn(textField: UITextField) -> Bool {
//Hide the keyboard.
textFieldRandomWord.resignFirstResponder()
return true}
func textFieldDidEndEditing(textField: UITextField){
whateverLabel.text = textFieldRandomWord.text}
//Above, the textFieldShouldReturn function makes the text field inactive when return (enter) is pressed. The last function gets activated automatically when this happens.//
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
【问题讨论】: